SlideShare une entreprise Scribd logo
26/12/2016 Encadré par :Mr Tragha
Mini-projet en algorithmique et
complexité
réalisé par :
Guebba sara Fagroud fatimaezzahra
Fagroud fati
Par la Pratique On aPPrend l’infOrmatique
Rapport Mini-projet
Page 1
I. DEFINITION D’UN ALGORITHME :
Un algorithme est une suite finie et non-ambiguë d’opérations ou d'instructions permettant de
résoudre un problème.
Le mot algorithme vient du nom latinisé du mathématicien persan Al-Khawarizmi, surnommé « le
père de l'algèbre ». Le domaine qui étudie les algorithmes est appelé l'algorithmique. On retrouve
aujourd'hui des algorithmes dans de nombreuses applications telles que la cryptographie, le routage
d'informations, la planification et l'optimisation de ressources, la bio-informatique, ...
1-1)Dans quel cas on dit q’un algorithme est correct ?
Un algorithme est correct lorsque pour chaque instance, il se termine en produisant la bonne sortie,
c'est-à-dire qu'il résout le problème posé. On mesure l'efficacité d'un algorithme notamment par sa
durée pour produire le résultat attendu et par sa consommation de mémoire RAM (en partant du
principe que chaque instruction a un temps d'exécution constant). Les ordinateurs sur lesquels
tournent ces algorithmes ne sont pas infiniment rapides : le temps de machine reste une ressource
limitée malgré une augmentation des performances considérable des machines. Un algorithme sera
donc dit performant s'il utilise avec parcimonie les ressources dont il dispose, c'est-à-dire le temps
CPU et la mémoire RAM.
1-2) la notion de complexité :
La complexité d’un problème mathématique P est une mesure de la quantité de ressources
nécessaires à la résolution du problème P.
L'efficacité d'un algorithme peut être évalué en temps et en espace :
 complexité en temps : évaluation du temps d'exécution de l'algorithme
 complexité en espace : évaluation de l'espace mémoire occupé par l'exécution de l'algorithme
Remarque :
Dans ce rapport, on s’intéresse à la complexité temporelle
Rapport Mini-projet
Page 2
On considère, désormais un algorithme dont le temps maximal d’exécution pour une donnée de taille
n en entrée est noté T(n).
Chercher la complexité au pire, dans la situation la plus défavorable, c’est exactement exprimer T(n)
en général en notation « O ».
Voici un dessin des courbes de chacune des complexités pour voir la plus rapide entre eux
Rapport Mini-projet
Page 3
II. TABLEAU, LISTE CHAINEE
2-1)C’est quoi un tableau :
 Les tableaux sont des ensembles de variables du même type stockées côte à côte en
mémoire.
 La taille d'un tableau doit être déterminée avant la compilation, elle ne peut pas dépendre
d'une variable.
 Chaque case d'un tableau de type int contient une variable de type int.
 Les cases sont numérotées via des indices commençant à 0
: tableau[0], tableau[1],tableau[2], etc.
2-2) C’est quoi une liste chainée ?
Une liste est une structure de données fondamentale en programmation : elle permet de
représenter une suite d'éléments, et de les manipuler très naturellement.
Cette structure est très adaptée à certains algorithmes de tri, entre autres le tri par insertion
2-3)La différence entre tableau et liste chainée :
 L’accès à un élément de liste chainé ne se fait pas par index mais à l’aide d’un pointeur.
 L’allocation de la mémoire par la liste chainée est faite au moment de l’exécution.
 Pour insérer un élément dans un tableau il aurait fallu déplacer plusieurs éléments mais da
une liste chainée, seulement deux pointeurs sont affectés pour insérer l’élément.
 Le tableau a une seule adresse, pour la liste chainée chaque cellule a son adresse.
Rapport Mini-projet
Page 4
III. LES FICHIERS
3-1) C’est quoi un fichier ?
 Un fichier est un ensemble d’information stockées sur une mémoire de masse(disque dur ,clé
..)
 Les informations contenues dans le fichier ne sont pas forcément de même type(un char , un
int ,une structure)
3-2)Manipulation des fichiers
3-2-1 déclaration
FILE *fichier ; majuscule obligatoire par FILE
3-2-2 Ouverture
FILE* fopen(const char* nomDuFichier, const char* modeOuverture);
Les modes d’ouvertures :
 "r" : lecture seule. Vous pourrez lire le contenu du fichier, mais pas y écrire. Le fichier doit avoir été créé
au préalable.
 "w" : écriture seule. Vous pourrez écrire dans le fichier, mais pas lire son contenu. Si le fichier n'existe pas,
il sera créé.
 "a" : mode d'ajout. Vous écrirez dans le fichier, en partant de la fin du fichier. Vous ajouterez donc du
texte à la fin du fichier. Si le fichier n'existe pas, il sera créé.
 "r+" : lecture et écriture. Vous pourrez lire et écrire dans le fichier. Le fichier doit avoir été créé au
préalable.
 "w+" : lecture et écriture, avec suppression du contenu au préalable. Le fichier est donc d'abord vidé de
son contenu, vous pouvez y écrire, et le lire ensuite. Si le fichier n'existe pas, il sera créé.
 "a+" : ajout en lecture / écriture à la fin. Vous écrivez et lisez du texte à partir de la fin du fichier.Si le
fichier n'existe pas, il sera créé.
3-3-3 Fermeture
int fclose(FILE* pointeurSurFichier);
3-3-4 Lecture à partir d’un fichier
 fgetc : lit un caractère .
int fgetc(FILE* pointeurDeFichier)
 fgets : lit une chaîne .
char* fgets(char* chaine, int nbreDeCaracteresALire, FILE* pointeurSurFichier);
 fscanf : lit une chaîne formatée.
Rapport Mini-projet
Page 5
fscanf(fichier, typede char", &char)
3-3-5 Ecriture dans le fichier
 fputc : écrit un caractère dans le fichier (UN SEUL caractère à la fois) ;
int fputc(int caractere, FILE* pointeurSurFichier);
 fputs : écrit une chaîne dans le fichier ;
char* fputs(const char* chaine, FILE* pointeurSurFichier);
 fprintf : écrit une chaîne « formatée » dans le fichier, fonctionnement quasi-identique
àprintf.
IV. QUELQUES EXEMPLES DE TRI
4-1) Tri à par insertion
Dans l'algorithme, on parcourt le tableau à trier du début à la fin. Au moment où on considère le i-
ème élément, les éléments qui le précèdent sont déjà triés. Pour faire l'analogie avec l'exemple du
jeu de cartes, lorsqu'on est à la i-ème étape du parcours, le i-ème élément est la carte saisie, les
éléments précédents sont la main triée et les éléments suivants correspondent aux cartes encore
mélangées sur la table.
L'objectif d'une étape est d'insérer le i-ème élément à sa place parmi ceux qui précèdent. Il faut
pour cela trouver où l'élément doit être inséré en le comparant aux autres, puis décaler les
éléments afin de pouvoir effectuer l'insertion. En pratique, ces deux actions sont fréquemment
effectuées en une passe, qui consiste à faire « remonter » l'élément au fur et à mesure jusqu'à
rencontrer un élément plus petit.
procédure tri_insertion(tableau T, entier n)
pour i de 1 à n - 1
# mémoriser la valeur de T[i]
x ← T[i]
# déplacer d'un cran vers la droite les éléments de T[0]..T[i-1]
qui sont plus grands que lui
j ← i
tant que j > 0 et T[j - 1] > x
T[j] ← T[j - 1]
j ← j - 1
fin tant que
# et mettre la valeur dans le "trou" que ça a laissé
T[j] ← x
fin pour
Rapport Mini-projet
Page 6
fin procédure
4-2) Tri à par selection
 Sur un tableau de n éléments (numérotés de 1 à n), le principe du tri par sélection est le
suivant :
 rechercher le plus petit élément du tableau, et l'échanger avec l'élément d'indice 1 ;
 rechercher le second plus petit élément du tableau, et l'échanger avec l'élément d'indice 2 ;
 continuer de cette façon jusqu'à ce que le tableau soit entièrement trié.
procédure tri_selection(tableau t, entier n)
pour i de 1 à n - 1
min ← i
pour j de i + 1 à n
si t[j] < t[min], alors min ← j
fin pour
si min ≠ i, alors échanger t[i] et t[min]
fin pour
fin procédure
4-3 Tri par bulle :
Le tri à bulles ou tri par propagation est un algorithme de tri. Il consiste à comparer répétitivement
les éléments consécutifs d'un tableau, et à les permuter lorsqu'ils sont mal triés. Il doit son nom au
fait qu'il déplace rapidement les plus grands éléments en fin de tableau, comme des bulles d'air qui
remonteraient rapidement à la surface d'un liquide.
tri_à_bulles(Tableau T)
pour i allant de taille de T - 1 à 1
pour j allant de 0 à i - 1
si T[j+1] < T[j]
échanger(T[j+1], T[j])
V. OUTILS ET ENVIRONNEMENTS DE DEVELOPPEMENT
5-1) le langage C
Rapport Mini-projet
Page 7
C est un langage de programmation impératif et généraliste. Inventé au début des années 1970 pour
réécrire UNIX, C est devenu un des langages les plus utilisés. De nombreux langages plus modernes
comme C++, Java et PHP reprennent des aspects de C.
Le langage C reste un des langages les plus utilisés actuellement. Cela est dû au fait que le langage C
est un langage qui comporte des instructions et des structures de haut niveau (contrairement à
l'assembleur par exemple) tout en générant un code très rapide grâce à un compilateur très
performant.
5-2) le codeblocks
est un environnement de développement intégré libre et multiplateforme. Il est écrit en C++ grâce à
la bibliothèque wxWidgets. CodeBlocks est orienté C et C++, mais il supporte d'autres langages
comme FORTRAN ou le D.
CodeBlocks est développé pour Linux, Windows et Mac OS X. Des utilisateurs indiquent avoir
réussi à compiler le code source sous FreeBSD [réf. nécessaire]3.
CodeBlocks est simple, voire intuitif, d'utilisation pour un programmeur. Il se révèle toutefois
fort complet dès qu'on en explore un peu les options.
Son architecture de plug-ins permet de l'étendre et de le personnaliser, tout en n'y incluant
que ce que l'on souhaite utiliser. La plupart étant inclus dans l'archive et l'installeur, il n'est
de ce fait pas nécessaire de les installer un à un.
Rapport Mini-projet
Page 8
VI. ETUDE THEORIQUE :
6-1) Complexité tri par insertion :
Le tri effectue n-1 insertions. A la i ème itération, dans le pire des cas, l’algorithme effectue i-
1 recopies. Le coût du tri est donc : O(n²).
Dans le meilleur des cas le tri par insertion requiert seulement O(n) traitements. C’est le cas
lorsque l’élément à insérer reste à sa place, donc quand la suite est déjà triée. On peut
montrer que le tri par insertion est quadratique en moyenne
6-2) Complexité tri à bulles
Dans le pire des cas, la complexité du tri à bulles est aussi en O(n²). Le pire des cas est, pour
ce tri, une liste triée en sens inverse.
Le meilleur des cas est une liste triée. Si l'algorithme est confronté à ce cas, sa complexité
s'améliore en O(n), ce qui signifie qu'il ne fait que n comparaisons pour n valeurs à trier (en
réalité, pour des raisons d'intervalles, il n'en fait que n-1).
VII. ETUDE PRATIQUE :
Listes chainés
Fonction calculant la longueur de la liste :
Fonction recherche d’un élément :
int lengthList(llist L)
{
int n=0;
llist p=L;
while(p!=NULL)
{
n++;
p=p->nxt;
}
return n;
}
int rechercherElement(llist liste, char *valeur)
{
simple *tmp=liste;
int i=0;
Rapport Mini-projet
Page 9
Fonction tri à bulles :
Fonction tri par insertion :
llist Tribulles(llist L)
{int taille=sizeof(char*);
llist Temp=(llist)malloc(taille);
llist temp=L,temp2;
int i,j;
int n=lengthList(L);
for(i=0;i<n-1;i++){
temp=L;temp2=temp->nxt;
while(temp2!=NULL) {
if(strcmp(temp2->val,temp->val)<0)
{ Temp->val=temp->val;
temp->val=temp2->val;
temp2->val=Temp->val;}
temp=temp->nxt;temp2=temp2->nxt; }
} }
void trier(llist l){
llist temp, temp1, temp2;
temp=temp1=temp2=NULL;
char *min;
Rapport Mini-projet
Page 10
Fonction ajout en fin d’une liste:
llist ajouterEnFin(llist liste, char *valeur)
{ simple* nouvelElement = malloc(sizeof(simple));
/* On assigne la valeur au nouvel élément */
nouvelElement->val = valeur;
/* On ajoute en fin, donc aucun élément ne va suivre */
Rapport Mini-projet
Page 11
Rapport Mini-projet
Page 12
Fonction main:
int main()
{
float temps;
clock_t debut, fin;
char a[50];
llist liste=NULL;
FILE *fich;
char *C=malloc(sizeof(C));
char* v=NULL;
fich=fopen("exemple.txt","r");/*ouverture de notre fichier*/
if(fich!=NULL){
while(!feof(fich) ){
fscanf(fich,"%s",C);
v=malloc(strlen(C)+1); /*on alloue de la mémoire notre chaine +1*/
strcpy(v,C);
liste = ajouterEnFin(liste, v);/*on remplie la chaine*/
}
}
fclose(fich);
int choixMenu;/*menu*/
printf("---Menu---nn");
printf("1.afficher votre liste!n");
printf("2.chercher un element!n");
printf("3.Trier la liste (tri par insertion)!n");
printf("4.Trier la liste (tri à bulles)!n");
printf("nVotre choix?nn");
scanf("%d", &choixMenu);
Rapport Mini-projet
Page 13
int S;
switch(choixMenu)
{case 1:
debut = clock();
afficherListe(liste);
printf("nn");
fin= clock();
temps = (float)(fin-debut)/CLOCKS_PER_SEC;
printf("ntemps = %fn", temps);
printf("vous voulez continuer taper 1 pour continuer et 0 pour exit");
scanf("%d",&S);
switch (S)
{ case 1:
main();
break;
case 0:
break;}
break;
case 2:
debut = clock();
printf("donner l'element à chercher");
scanf("%s",&a);
int p=Recherche(liste,a);
printf("la valeur cherchée est trouve %dnn",p);
fin= clock();
temps = (float)(fin-debut)/CLOCKS_PER_SEC;
printf("ntemps = %fn", temps);
printf("vous voulez continuer taper 1 pour continuer et 0 pour exit");
scanf("%d",&S);
Rapport Mini-projet
Page 14
switch (S)
{ case 1:
main();
break;
case 0:
return 0;
}
main();
break;
case 3:
debut = clock();
trier(liste);
afficherListe(liste);
fin= clock();
temps = (float)(fin-debut)/CLOCKS_PER_SEC;
printf("ntemps = %fn", temps);
printf("vous voulez continuer taper 1 pour continuer et 0 pour exit");
scanf("%d",&S);
switch (S)
{ case 1:
main();
break;
case 0:
return 0;
}
break;
Rapport Mini-projet
Page 15
case 4:
debut = clock();
Tribulles(liste);
afficherListe(liste);
fin= clock();
temps = (float)(fin-debut)/CLOCKS_PER_SEC;
printf("ntemps = %fn", temps);
printf("vous voulez continuer taper 1 pour continuer et 0 pour exit");
scanf("%d",&S);
switch (S)
{ case 1:
main();
break;
case 0:
return 0;
}
break;
default:
printf("Ce choix n'existe pas dans notre menu !");
break;
}
system("PAUSE");
return 0;
}
Rapport Mini-projet
Page 16
Si on choisit 1 :
Si on choisit 2 :
Si on choisit 3:
Rapport Mini-projet
Page 17
Si on choisit 4:
Rapport Mini-projet
Page 18
Tableaux
Fonction recherche d’un élément :
Fonction tri à bulles :
int recherche(char tab[max][Ma],char val[10])
{
int i,a;
for(i=0;i<max;i++)
{
if(strcmp(val,tab[i])==0)
{
a=i;
break;
}
}
return a; }
void tribulles(char t[max][Ma],int n)
{
int i,j;
char cle[30];
for(i=0;i<n;i++)
{
for(j=n-1;j>=i+1;--j)
{
if(strcmp(t[j-1],t[j])<0)
{
strcpy(cle,t[j-1]);
strcpy(t[j-1],t[j]);
strcpy(t[j],cle);
}
}
Rapport Mini-projet
Page 19
Fonction tri par insertion :
void triInsertion ( char tab[max][Ma],int n) /*la fonction de tri par insertion ne retourne rien
donc void*/
{
int i,j;
char cle[30];
for(i=1;i<=n;i++) /* boucle for pour parcours du tableau */
{
j=i;
strcpy(cle,tab[j]);
while( j>=1 && strcmp(tab[j-1],cle)<0) /* boucle while qui fait le test et insert les
éléments */
{
strcpy(tab[j],tab[j-1]);
j=j-1;
strcpy(tab[j],cle);
}
Rapport Mini-projet
Page 20
Fonction main :
int main()
{
float temps;
clock_t debut, fin;
char ch[10];
FILE *fich;
int D,i,x;
char C[max]="",T[max][Ma];
char* v;
fich=fopen("exemple.txt","r");
i=0;
if(fich!=NULL){
while(fgets (C,max,fich)!=NULL ){ /*on prend ligne par ligne*/
v=strtok(C," "); /*on divise ligne en mot par strtok*/
while(v!=NULL && i<max){
strcpy(T[i],v);
v=strtok(NULL," ");
i++;
} } }
printf("nnn");
int choixMenu;
printf("---Menu---nn");
printf("1.afficher votre tableau !n");
printf("2.chercher un element!n");
printf("3.Trier le tableau (tri par insertion)!n");
printf("4.Trier le tableau (tri à bulles)!n");
printf("nVotre choix?nn");
scanf("%d", &choixMenu);
if(choixMenu==1){
Rapport Mini-projet
Page 21
int S;
if(choixMenu==1){
debut = clock();
for(x=0;x<i;x++){
printf("tT[%d]=%s",x,T[x]);
printf("nn");}
fin= clock();
temps = (float)(fin-debut)/CLOCKS_PER_SEC;
printf("ntemps = %fn", temps);
printf("vous voulez continuer taper 1 pour continuer et 0 pour exit");
scanf("%d",&S);
{if(S==1)
main();
else
return 0; } }
if(choixMenu==2){
debut = clock();
printf("donner l'element à chercher");
scanf("%s",&ch);
D=recherche(T,ch);
printf("la valeur cherchée se trouve %da",D);
fin= clock();
temps = (float)(fin-debut)/CLOCKS_PER_SEC;
printf("ntemps = %fn", temps);
printf("vous voulez continuer taper 1 pour continuer et 0 pour exit");
scanf("%d",&S);
if(S==1)
{
main();}
else
return 0;
}
Rapport Mini-projet
Page 22
if(choixMenu==3) {
debut = clock();
triInsertion(T,10);
for(i=0;i<10;i++){
printf(" T[%d]=%s ",i,T[i]);}
fin= clock();
temps = (float)(fin-debut)/CLOCKS_PER_SEC;
printf("ntemps = %fn", temps);
printf("vous voulez continuer taper 1 pour continuer et 0 pour exit");
scanf("%d",&S);
if(S==1)
{
main();}
else
return 0;
}
if(choixMenu==4) {
debut = clock();
tribulles(T,10);
for(i=0;i<10;i++){
printf(" T[%d]=%s ",i,T[i]);}
fin= clock();
temps = (float)(fin-debut)/CLOCKS_PER_SEC;
printf("ntemps = %fn", temps);
printf("vous voulez continuer taper 1 pour continuer et 0 pour exit");
scanf("%d",&S);
if(S==1)
{
main();}
else
return 0;
}
Rapport Mini-projet
Page 23
Si on tape 1 :
Si on tape 2 :
else
printf("Ce choix n'existe pas dans notre menu !");}
}
Rapport Mini-projet
Page 24
Si on tape 3 :
Si on tape 4 :
Rapport Mini-projet
Page 25
On a pour le tri par insertion ou par bulles la compléxité soit pour les listes chainées ou par les tableaus
vaut
O(n²)
Donc pour le temps d’éxecution du tri par insertion dans le tableau :
Pour les listes chainées on a :
Complexité
théorique
Temps d’exécution
avec structure 1
(tableaux)
Temps d’exécution
avec structure 2
(liste chainée)
Algorithme 1 : tri par
insertion
O(n²) 0.002 0.001
Algorithme 2 : tri à
bulles
O(n²) 0.000 0.001
Algorithme 3 :
recherche
sequentielle
O(n) 2.56 3.77
Rapport Mini-projet
Page 26
Pour le tri par bulle pour le tableau :
Rapport Mini-projet
Page 27
Pour le tri des listes chainées par bulle :
Pour la recherche d’un mot dans le tableau :
Pour la recherche d’un mot dans la liste
Rapport Mini-projet
Page 28

Contenu connexe

Tendances

اسئلة حاسوب شاملة المادة كاملة (1)
اسئلة حاسوب شاملة المادة كاملة (1)اسئلة حاسوب شاملة المادة كاملة (1)
اسئلة حاسوب شاملة المادة كاملة (1)
Basel Samhouri
 
Preprocessor directives in c language
Preprocessor directives in c languagePreprocessor directives in c language
Preprocessor directives in c language
tanmaymodi4
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec Matlab
Mariem ZAOUALI
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
IbtissameAbbad1
 
Diaporama initiation informatique
Diaporama initiation informatiqueDiaporama initiation informatique
Diaporama initiation informatique
bibriom
 
Unit 1 ocs752 introduction to c programming
Unit 1 ocs752 introduction to c programmingUnit 1 ocs752 introduction to c programming
Unit 1 ocs752 introduction to c programming
vrgokila
 
Programming in c
Programming in cProgramming in c
Programming in c
ankitjain851
 
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfLUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
RedaBelattar
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql
Yassine Badri
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
Jaouad Rachek
 
Hwr ,Fwr,Br.pptx
Hwr ,Fwr,Br.pptxHwr ,Fwr,Br.pptx
Hwr ,Fwr,Br.pptx
DHANUSHKUMARKS
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
salah fenni
 
165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-sEttaoufik Elayedi
 
What is a Computer? (Arabic)
What is a Computer? (Arabic)What is a Computer? (Arabic)
What is a Computer? (Arabic)
Kuwait10
 
Traitement d'image sous Matlab
Traitement d'image sous Matlab  Traitement d'image sous Matlab
Traitement d'image sous Matlab
Hajer Dahech
 
01 correction-td smia-s2-info2
01 correction-td smia-s2-info201 correction-td smia-s2-info2
01 correction-td smia-s2-info2
L’Université Hassan 1er Settat
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage cEbrima NJIE
 
Excel 2010 - Fonctions et formules
Excel 2010 - Fonctions et formulesExcel 2010 - Fonctions et formules
Excel 2010 - Fonctions et formules
Claudio Montoni
 
Biométrie d'empreinte Mini Projet: Power Point
Biométrie d'empreinte Mini Projet: Power PointBiométrie d'empreinte Mini Projet: Power Point
Biométrie d'empreinte Mini Projet: Power PointIntissar Dguechi
 
Slide matlab
Slide matlab Slide matlab
Slide matlab
Smee Kaem Chann
 

Tendances (20)

اسئلة حاسوب شاملة المادة كاملة (1)
اسئلة حاسوب شاملة المادة كاملة (1)اسئلة حاسوب شاملة المادة كاملة (1)
اسئلة حاسوب شاملة المادة كاملة (1)
 
Preprocessor directives in c language
Preprocessor directives in c languagePreprocessor directives in c language
Preprocessor directives in c language
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec Matlab
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Diaporama initiation informatique
Diaporama initiation informatiqueDiaporama initiation informatique
Diaporama initiation informatique
 
Unit 1 ocs752 introduction to c programming
Unit 1 ocs752 introduction to c programmingUnit 1 ocs752 introduction to c programming
Unit 1 ocs752 introduction to c programming
 
Programming in c
Programming in cProgramming in c
Programming in c
 
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfLUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 
Hwr ,Fwr,Br.pptx
Hwr ,Fwr,Br.pptxHwr ,Fwr,Br.pptx
Hwr ,Fwr,Br.pptx
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s
 
What is a Computer? (Arabic)
What is a Computer? (Arabic)What is a Computer? (Arabic)
What is a Computer? (Arabic)
 
Traitement d'image sous Matlab
Traitement d'image sous Matlab  Traitement d'image sous Matlab
Traitement d'image sous Matlab
 
01 correction-td smia-s2-info2
01 correction-td smia-s2-info201 correction-td smia-s2-info2
01 correction-td smia-s2-info2
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage c
 
Excel 2010 - Fonctions et formules
Excel 2010 - Fonctions et formulesExcel 2010 - Fonctions et formules
Excel 2010 - Fonctions et formules
 
Biométrie d'empreinte Mini Projet: Power Point
Biométrie d'empreinte Mini Projet: Power PointBiométrie d'empreinte Mini Projet: Power Point
Biométrie d'empreinte Mini Projet: Power Point
 
Slide matlab
Slide matlab Slide matlab
Slide matlab
 

En vedette

ATL et SVG
ATL et SVGATL et SVG
Expose linux gestion des processus
Expose linux  gestion des processusExpose linux  gestion des processus
Expose linux gestion des processus
Fatima Zahra Fagroud
 
Interfaces controlesbasededonné
Interfaces controlesbasededonnéInterfaces controlesbasededonné
Interfaces controlesbasededonné
Fatima Zahra Fagroud
 
Rapport pfe licence
Rapport pfe licenceRapport pfe licence
Rapport pfe licence
Fatima Zahra Fagroud
 
Algorithmique et programmation michael griffith
Algorithmique et programmation michael griffithAlgorithmique et programmation michael griffith
Algorithmique et programmation michael griffith
Bernhard Ndale
 
Intelligence somatique pour coachs et facilitateurs - Fiche pédagogique
Intelligence somatique pour coachs et facilitateurs - Fiche pédagogiqueIntelligence somatique pour coachs et facilitateurs - Fiche pédagogique
Intelligence somatique pour coachs et facilitateurs - Fiche pédagogique
Maud RABER
 
7exercices loi-normale-et-corriges-www.coursdefsjes.com
7exercices loi-normale-et-corriges-www.coursdefsjes.com7exercices loi-normale-et-corriges-www.coursdefsjes.com
7exercices loi-normale-et-corriges-www.coursdefsjes.com
rachoo10
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
ABID Mehdi
 
Les homophones grammaticaux
Les homophones grammaticauxLes homophones grammaticaux
Les homophones grammaticaux
zeinabdibhammoud
 
Le cryptage et le décryptage
Le cryptage et le décryptageLe cryptage et le décryptage
Le cryptage et le décryptage
SKYWARE COMPAGNY
 
cours de complexité algorithmique
cours de complexité algorithmiquecours de complexité algorithmique
cours de complexité algorithmique
Atef MASMOUDI
 
Exercices triphase
Exercices triphaseExercices triphase
Exercices triphase
MOUHSSINE BEN HAMMOU
 
Algorithmique au cycle 3
Algorithmique au cycle 3Algorithmique au cycle 3
Algorithmique au cycle 3
eduscol
 
Algorithme DPLL
Algorithme DPLLAlgorithme DPLL
Algorithme DPLL
Elhem Sassi
 
TD La fonction logarithme exercices corrigés - SOUFIANE MERABTI
TD La fonction logarithme exercices corrigés -  SOUFIANE MERABTITD La fonction logarithme exercices corrigés -  SOUFIANE MERABTI
TD La fonction logarithme exercices corrigés - SOUFIANE MERABTI
soufiane merabti
 
Merise exercicesmcdcorriges-121007174045-phpapp01
Merise exercicesmcdcorriges-121007174045-phpapp01Merise exercicesmcdcorriges-121007174045-phpapp01
Merise exercicesmcdcorriges-121007174045-phpapp01
SaberCraft Zeriguine
 
Chap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmiqueChap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmique
Mohamed Lahby
 
Implémentation des principaux algorithmes de chiffrements en Java
Implémentation des principaux algorithmes de chiffrements en JavaImplémentation des principaux algorithmes de chiffrements en Java
Implémentation des principaux algorithmes de chiffrements en Java
Ibn Tofail University
 
7 exercices-remediations-jc jost
7 exercices-remediations-jc jost7 exercices-remediations-jc jost
7 exercices-remediations-jc jost
Académie de Dijon - Histoire-géo
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
Sana Aroussi
 

En vedette (20)

ATL et SVG
ATL et SVGATL et SVG
ATL et SVG
 
Expose linux gestion des processus
Expose linux  gestion des processusExpose linux  gestion des processus
Expose linux gestion des processus
 
Interfaces controlesbasededonné
Interfaces controlesbasededonnéInterfaces controlesbasededonné
Interfaces controlesbasededonné
 
Rapport pfe licence
Rapport pfe licenceRapport pfe licence
Rapport pfe licence
 
Algorithmique et programmation michael griffith
Algorithmique et programmation michael griffithAlgorithmique et programmation michael griffith
Algorithmique et programmation michael griffith
 
Intelligence somatique pour coachs et facilitateurs - Fiche pédagogique
Intelligence somatique pour coachs et facilitateurs - Fiche pédagogiqueIntelligence somatique pour coachs et facilitateurs - Fiche pédagogique
Intelligence somatique pour coachs et facilitateurs - Fiche pédagogique
 
7exercices loi-normale-et-corriges-www.coursdefsjes.com
7exercices loi-normale-et-corriges-www.coursdefsjes.com7exercices loi-normale-et-corriges-www.coursdefsjes.com
7exercices loi-normale-et-corriges-www.coursdefsjes.com
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Les homophones grammaticaux
Les homophones grammaticauxLes homophones grammaticaux
Les homophones grammaticaux
 
Le cryptage et le décryptage
Le cryptage et le décryptageLe cryptage et le décryptage
Le cryptage et le décryptage
 
cours de complexité algorithmique
cours de complexité algorithmiquecours de complexité algorithmique
cours de complexité algorithmique
 
Exercices triphase
Exercices triphaseExercices triphase
Exercices triphase
 
Algorithmique au cycle 3
Algorithmique au cycle 3Algorithmique au cycle 3
Algorithmique au cycle 3
 
Algorithme DPLL
Algorithme DPLLAlgorithme DPLL
Algorithme DPLL
 
TD La fonction logarithme exercices corrigés - SOUFIANE MERABTI
TD La fonction logarithme exercices corrigés -  SOUFIANE MERABTITD La fonction logarithme exercices corrigés -  SOUFIANE MERABTI
TD La fonction logarithme exercices corrigés - SOUFIANE MERABTI
 
Merise exercicesmcdcorriges-121007174045-phpapp01
Merise exercicesmcdcorriges-121007174045-phpapp01Merise exercicesmcdcorriges-121007174045-phpapp01
Merise exercicesmcdcorriges-121007174045-phpapp01
 
Chap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmiqueChap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmique
 
Implémentation des principaux algorithmes de chiffrements en Java
Implémentation des principaux algorithmes de chiffrements en JavaImplémentation des principaux algorithmes de chiffrements en Java
Implémentation des principaux algorithmes de chiffrements en Java
 
7 exercices-remediations-jc jost
7 exercices-remediations-jc jost7 exercices-remediations-jc jost
7 exercices-remediations-jc jost
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 

Similaire à Rapport Projet Module Complexité

Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2Emeric Tapachès
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
LamissGhoul1
 
Entrees sorties
Entrees sortiesEntrees sorties
Entrees sortiesyazidds2
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
Abdoulaye Dieng
 
Mathématiques et Python
Mathématiques et PythonMathématiques et Python
Mathématiques et Python
Dany-Jack Mercier
 
Gestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdfGestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdf
MadaniAhlem2
 
01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdf01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdf
MARYAM510573
 
langage C++
langage C++langage C++
langage C++
mohamednacim
 
Exploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXExploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseX
Emmanuelle Morlock
 
Manipulation_des_fichiers_en_C.ppsx
Manipulation_des_fichiers_en_C.ppsxManipulation_des_fichiers_en_C.ppsx
Manipulation_des_fichiers_en_C.ppsx
YallaHabibi5
 
Manipulation des fichiers en C.pptx
Manipulation des fichiers en C.pptxManipulation des fichiers en C.pptx
Manipulation des fichiers en C.pptx
olfaharrabi2
 
Linux Administrateur
Linux AdministrateurLinux Administrateur
Linux Administrateur
Open Source School
 
Les_fichiers_sousPython..TXT et JSON et csv
Les_fichiers_sousPython..TXT et JSON et csvLes_fichiers_sousPython..TXT et JSON et csv
Les_fichiers_sousPython..TXT et JSON et csv
nadiamfr1
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)mahbouba
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
Amir Souissi
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
Sana Aroussi
 

Similaire à Rapport Projet Module Complexité (20)

Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
 
Entrees sorties
Entrees sortiesEntrees sorties
Entrees sorties
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Mathématiques et Python
Mathématiques et PythonMathématiques et Python
Mathématiques et Python
 
Theme 8
Theme 8Theme 8
Theme 8
 
Gestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdfGestion d'E_S - Sérialisation.pdf
Gestion d'E_S - Sérialisation.pdf
 
01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdf01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdf
 
langage C++
langage C++langage C++
langage C++
 
Exploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXExploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseX
 
Manipulation_des_fichiers_en_C.ppsx
Manipulation_des_fichiers_en_C.ppsxManipulation_des_fichiers_en_C.ppsx
Manipulation_des_fichiers_en_C.ppsx
 
Manipulation des fichiers en C.pptx
Manipulation des fichiers en C.pptxManipulation des fichiers en C.pptx
Manipulation des fichiers en C.pptx
 
Linux Administrateur
Linux AdministrateurLinux Administrateur
Linux Administrateur
 
Les_fichiers_sousPython..TXT et JSON et csv
Les_fichiers_sousPython..TXT et JSON et csvLes_fichiers_sousPython..TXT et JSON et csv
Les_fichiers_sousPython..TXT et JSON et csv
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 

Plus de Fatima Zahra Fagroud

Langage de Programmation Python : Rappel sur les bases
Langage de Programmation Python : Rappel sur les basesLangage de Programmation Python : Rappel sur les bases
Langage de Programmation Python : Rappel sur les bases
Fatima Zahra Fagroud
 
Langage Dart : Partie 1 (Proposé par Google)
Langage Dart :  Partie 1 (Proposé par Google)Langage Dart :  Partie 1 (Proposé par Google)
Langage Dart : Partie 1 (Proposé par Google)
Fatima Zahra Fagroud
 
Introduction générale au Framework Flutter
Introduction générale au Framework FlutterIntroduction générale au Framework Flutter
Introduction générale au Framework Flutter
Fatima Zahra Fagroud
 
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Fatima Zahra Fagroud
 
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )
Fatima Zahra Fagroud
 
Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))
Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))
Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))
Fatima Zahra Fagroud
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
Fatima Zahra Fagroud
 
Ateliers protypage d objets connectes via arduino
Ateliers protypage d objets connectes via arduinoAteliers protypage d objets connectes via arduino
Ateliers protypage d objets connectes via arduino
Fatima Zahra Fagroud
 
Feu tricolore tuto
Feu tricolore tutoFeu tricolore tuto
Feu tricolore tuto
Fatima Zahra Fagroud
 
Etude comparative des fournisseurs de service BI
Etude comparative des fournisseurs de service BIEtude comparative des fournisseurs de service BI
Etude comparative des fournisseurs de service BI
Fatima Zahra Fagroud
 
Récupération d’une Base De Données & Flashback Database
Récupération d’une Base De Données  & Flashback DatabaseRécupération d’une Base De Données  & Flashback Database
Récupération d’une Base De Données & Flashback Database
Fatima Zahra Fagroud
 
Rapid miner
Rapid miner Rapid miner
Rapid miner
Fatima Zahra Fagroud
 
Ibm bigsheets
Ibm bigsheetsIbm bigsheets
Ibm bigsheets
Fatima Zahra Fagroud
 
Angular
AngularAngular
Cycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologiesCycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologies
Fatima Zahra Fagroud
 
Processus d’indexation
Processus d’indexationProcessus d’indexation
Processus d’indexation
Fatima Zahra Fagroud
 
Spring social
Spring socialSpring social
Spring social
Fatima Zahra Fagroud
 
Rapport TP Corrélation
Rapport TP CorrélationRapport TP Corrélation
Rapport TP Corrélation
Fatima Zahra Fagroud
 
Ionic
Ionic Ionic
Ibm bluemix
Ibm bluemixIbm bluemix

Plus de Fatima Zahra Fagroud (20)

Langage de Programmation Python : Rappel sur les bases
Langage de Programmation Python : Rappel sur les basesLangage de Programmation Python : Rappel sur les bases
Langage de Programmation Python : Rappel sur les bases
 
Langage Dart : Partie 1 (Proposé par Google)
Langage Dart :  Partie 1 (Proposé par Google)Langage Dart :  Partie 1 (Proposé par Google)
Langage Dart : Partie 1 (Proposé par Google)
 
Introduction générale au Framework Flutter
Introduction générale au Framework FlutterIntroduction générale au Framework Flutter
Introduction générale au Framework Flutter
 
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
 
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )
 
Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))
Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))
Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Ateliers protypage d objets connectes via arduino
Ateliers protypage d objets connectes via arduinoAteliers protypage d objets connectes via arduino
Ateliers protypage d objets connectes via arduino
 
Feu tricolore tuto
Feu tricolore tutoFeu tricolore tuto
Feu tricolore tuto
 
Etude comparative des fournisseurs de service BI
Etude comparative des fournisseurs de service BIEtude comparative des fournisseurs de service BI
Etude comparative des fournisseurs de service BI
 
Récupération d’une Base De Données & Flashback Database
Récupération d’une Base De Données  & Flashback DatabaseRécupération d’une Base De Données  & Flashback Database
Récupération d’une Base De Données & Flashback Database
 
Rapid miner
Rapid miner Rapid miner
Rapid miner
 
Ibm bigsheets
Ibm bigsheetsIbm bigsheets
Ibm bigsheets
 
Angular
AngularAngular
Angular
 
Cycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologiesCycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologies
 
Processus d’indexation
Processus d’indexationProcessus d’indexation
Processus d’indexation
 
Spring social
Spring socialSpring social
Spring social
 
Rapport TP Corrélation
Rapport TP CorrélationRapport TP Corrélation
Rapport TP Corrélation
 
Ionic
Ionic Ionic
Ionic
 
Ibm bluemix
Ibm bluemixIbm bluemix
Ibm bluemix
 

Dernier

Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
Txaruka
 
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
M2i Formation
 
Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
Friends of African Village Libraries
 
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
BenotGeorges3
 
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
cristionobedi
 
Iris van Herpen. pptx
Iris         van         Herpen.      pptxIris         van         Herpen.      pptx
Iris van Herpen. pptx
Txaruka
 
Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025
Billy DEYLORD
 
Iris van Herpen. pptx
Iris         van        Herpen.      pptxIris         van        Herpen.      pptx
Iris van Herpen. pptx
Txaruka
 

Dernier (8)

Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
 
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
 
Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
 
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
 
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
 
Iris van Herpen. pptx
Iris         van         Herpen.      pptxIris         van         Herpen.      pptx
Iris van Herpen. pptx
 
Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025
 
Iris van Herpen. pptx
Iris         van        Herpen.      pptxIris         van        Herpen.      pptx
Iris van Herpen. pptx
 

Rapport Projet Module Complexité

  • 1. 26/12/2016 Encadré par :Mr Tragha Mini-projet en algorithmique et complexité réalisé par : Guebba sara Fagroud fatimaezzahra Fagroud fati Par la Pratique On aPPrend l’infOrmatique
  • 2. Rapport Mini-projet Page 1 I. DEFINITION D’UN ALGORITHME : Un algorithme est une suite finie et non-ambiguë d’opérations ou d'instructions permettant de résoudre un problème. Le mot algorithme vient du nom latinisé du mathématicien persan Al-Khawarizmi, surnommé « le père de l'algèbre ». Le domaine qui étudie les algorithmes est appelé l'algorithmique. On retrouve aujourd'hui des algorithmes dans de nombreuses applications telles que la cryptographie, le routage d'informations, la planification et l'optimisation de ressources, la bio-informatique, ... 1-1)Dans quel cas on dit q’un algorithme est correct ? Un algorithme est correct lorsque pour chaque instance, il se termine en produisant la bonne sortie, c'est-à-dire qu'il résout le problème posé. On mesure l'efficacité d'un algorithme notamment par sa durée pour produire le résultat attendu et par sa consommation de mémoire RAM (en partant du principe que chaque instruction a un temps d'exécution constant). Les ordinateurs sur lesquels tournent ces algorithmes ne sont pas infiniment rapides : le temps de machine reste une ressource limitée malgré une augmentation des performances considérable des machines. Un algorithme sera donc dit performant s'il utilise avec parcimonie les ressources dont il dispose, c'est-à-dire le temps CPU et la mémoire RAM. 1-2) la notion de complexité : La complexité d’un problème mathématique P est une mesure de la quantité de ressources nécessaires à la résolution du problème P. L'efficacité d'un algorithme peut être évalué en temps et en espace :  complexité en temps : évaluation du temps d'exécution de l'algorithme  complexité en espace : évaluation de l'espace mémoire occupé par l'exécution de l'algorithme Remarque : Dans ce rapport, on s’intéresse à la complexité temporelle
  • 3. Rapport Mini-projet Page 2 On considère, désormais un algorithme dont le temps maximal d’exécution pour une donnée de taille n en entrée est noté T(n). Chercher la complexité au pire, dans la situation la plus défavorable, c’est exactement exprimer T(n) en général en notation « O ». Voici un dessin des courbes de chacune des complexités pour voir la plus rapide entre eux
  • 4. Rapport Mini-projet Page 3 II. TABLEAU, LISTE CHAINEE 2-1)C’est quoi un tableau :  Les tableaux sont des ensembles de variables du même type stockées côte à côte en mémoire.  La taille d'un tableau doit être déterminée avant la compilation, elle ne peut pas dépendre d'une variable.  Chaque case d'un tableau de type int contient une variable de type int.  Les cases sont numérotées via des indices commençant à 0 : tableau[0], tableau[1],tableau[2], etc. 2-2) C’est quoi une liste chainée ? Une liste est une structure de données fondamentale en programmation : elle permet de représenter une suite d'éléments, et de les manipuler très naturellement. Cette structure est très adaptée à certains algorithmes de tri, entre autres le tri par insertion 2-3)La différence entre tableau et liste chainée :  L’accès à un élément de liste chainé ne se fait pas par index mais à l’aide d’un pointeur.  L’allocation de la mémoire par la liste chainée est faite au moment de l’exécution.  Pour insérer un élément dans un tableau il aurait fallu déplacer plusieurs éléments mais da une liste chainée, seulement deux pointeurs sont affectés pour insérer l’élément.  Le tableau a une seule adresse, pour la liste chainée chaque cellule a son adresse.
  • 5. Rapport Mini-projet Page 4 III. LES FICHIERS 3-1) C’est quoi un fichier ?  Un fichier est un ensemble d’information stockées sur une mémoire de masse(disque dur ,clé ..)  Les informations contenues dans le fichier ne sont pas forcément de même type(un char , un int ,une structure) 3-2)Manipulation des fichiers 3-2-1 déclaration FILE *fichier ; majuscule obligatoire par FILE 3-2-2 Ouverture FILE* fopen(const char* nomDuFichier, const char* modeOuverture); Les modes d’ouvertures :  "r" : lecture seule. Vous pourrez lire le contenu du fichier, mais pas y écrire. Le fichier doit avoir été créé au préalable.  "w" : écriture seule. Vous pourrez écrire dans le fichier, mais pas lire son contenu. Si le fichier n'existe pas, il sera créé.  "a" : mode d'ajout. Vous écrirez dans le fichier, en partant de la fin du fichier. Vous ajouterez donc du texte à la fin du fichier. Si le fichier n'existe pas, il sera créé.  "r+" : lecture et écriture. Vous pourrez lire et écrire dans le fichier. Le fichier doit avoir été créé au préalable.  "w+" : lecture et écriture, avec suppression du contenu au préalable. Le fichier est donc d'abord vidé de son contenu, vous pouvez y écrire, et le lire ensuite. Si le fichier n'existe pas, il sera créé.  "a+" : ajout en lecture / écriture à la fin. Vous écrivez et lisez du texte à partir de la fin du fichier.Si le fichier n'existe pas, il sera créé. 3-3-3 Fermeture int fclose(FILE* pointeurSurFichier); 3-3-4 Lecture à partir d’un fichier  fgetc : lit un caractère . int fgetc(FILE* pointeurDeFichier)  fgets : lit une chaîne . char* fgets(char* chaine, int nbreDeCaracteresALire, FILE* pointeurSurFichier);  fscanf : lit une chaîne formatée.
  • 6. Rapport Mini-projet Page 5 fscanf(fichier, typede char", &char) 3-3-5 Ecriture dans le fichier  fputc : écrit un caractère dans le fichier (UN SEUL caractère à la fois) ; int fputc(int caractere, FILE* pointeurSurFichier);  fputs : écrit une chaîne dans le fichier ; char* fputs(const char* chaine, FILE* pointeurSurFichier);  fprintf : écrit une chaîne « formatée » dans le fichier, fonctionnement quasi-identique àprintf. IV. QUELQUES EXEMPLES DE TRI 4-1) Tri à par insertion Dans l'algorithme, on parcourt le tableau à trier du début à la fin. Au moment où on considère le i- ème élément, les éléments qui le précèdent sont déjà triés. Pour faire l'analogie avec l'exemple du jeu de cartes, lorsqu'on est à la i-ème étape du parcours, le i-ème élément est la carte saisie, les éléments précédents sont la main triée et les éléments suivants correspondent aux cartes encore mélangées sur la table. L'objectif d'une étape est d'insérer le i-ème élément à sa place parmi ceux qui précèdent. Il faut pour cela trouver où l'élément doit être inséré en le comparant aux autres, puis décaler les éléments afin de pouvoir effectuer l'insertion. En pratique, ces deux actions sont fréquemment effectuées en une passe, qui consiste à faire « remonter » l'élément au fur et à mesure jusqu'à rencontrer un élément plus petit. procédure tri_insertion(tableau T, entier n) pour i de 1 à n - 1 # mémoriser la valeur de T[i] x ← T[i] # déplacer d'un cran vers la droite les éléments de T[0]..T[i-1] qui sont plus grands que lui j ← i tant que j > 0 et T[j - 1] > x T[j] ← T[j - 1] j ← j - 1 fin tant que # et mettre la valeur dans le "trou" que ça a laissé T[j] ← x fin pour
  • 7. Rapport Mini-projet Page 6 fin procédure 4-2) Tri à par selection  Sur un tableau de n éléments (numérotés de 1 à n), le principe du tri par sélection est le suivant :  rechercher le plus petit élément du tableau, et l'échanger avec l'élément d'indice 1 ;  rechercher le second plus petit élément du tableau, et l'échanger avec l'élément d'indice 2 ;  continuer de cette façon jusqu'à ce que le tableau soit entièrement trié. procédure tri_selection(tableau t, entier n) pour i de 1 à n - 1 min ← i pour j de i + 1 à n si t[j] < t[min], alors min ← j fin pour si min ≠ i, alors échanger t[i] et t[min] fin pour fin procédure 4-3 Tri par bulle : Le tri à bulles ou tri par propagation est un algorithme de tri. Il consiste à comparer répétitivement les éléments consécutifs d'un tableau, et à les permuter lorsqu'ils sont mal triés. Il doit son nom au fait qu'il déplace rapidement les plus grands éléments en fin de tableau, comme des bulles d'air qui remonteraient rapidement à la surface d'un liquide. tri_à_bulles(Tableau T) pour i allant de taille de T - 1 à 1 pour j allant de 0 à i - 1 si T[j+1] < T[j] échanger(T[j+1], T[j]) V. OUTILS ET ENVIRONNEMENTS DE DEVELOPPEMENT 5-1) le langage C
  • 8. Rapport Mini-projet Page 7 C est un langage de programmation impératif et généraliste. Inventé au début des années 1970 pour réécrire UNIX, C est devenu un des langages les plus utilisés. De nombreux langages plus modernes comme C++, Java et PHP reprennent des aspects de C. Le langage C reste un des langages les plus utilisés actuellement. Cela est dû au fait que le langage C est un langage qui comporte des instructions et des structures de haut niveau (contrairement à l'assembleur par exemple) tout en générant un code très rapide grâce à un compilateur très performant. 5-2) le codeblocks est un environnement de développement intégré libre et multiplateforme. Il est écrit en C++ grâce à la bibliothèque wxWidgets. CodeBlocks est orienté C et C++, mais il supporte d'autres langages comme FORTRAN ou le D. CodeBlocks est développé pour Linux, Windows et Mac OS X. Des utilisateurs indiquent avoir réussi à compiler le code source sous FreeBSD [réf. nécessaire]3. CodeBlocks est simple, voire intuitif, d'utilisation pour un programmeur. Il se révèle toutefois fort complet dès qu'on en explore un peu les options. Son architecture de plug-ins permet de l'étendre et de le personnaliser, tout en n'y incluant que ce que l'on souhaite utiliser. La plupart étant inclus dans l'archive et l'installeur, il n'est de ce fait pas nécessaire de les installer un à un.
  • 9. Rapport Mini-projet Page 8 VI. ETUDE THEORIQUE : 6-1) Complexité tri par insertion : Le tri effectue n-1 insertions. A la i ème itération, dans le pire des cas, l’algorithme effectue i- 1 recopies. Le coût du tri est donc : O(n²). Dans le meilleur des cas le tri par insertion requiert seulement O(n) traitements. C’est le cas lorsque l’élément à insérer reste à sa place, donc quand la suite est déjà triée. On peut montrer que le tri par insertion est quadratique en moyenne 6-2) Complexité tri à bulles Dans le pire des cas, la complexité du tri à bulles est aussi en O(n²). Le pire des cas est, pour ce tri, une liste triée en sens inverse. Le meilleur des cas est une liste triée. Si l'algorithme est confronté à ce cas, sa complexité s'améliore en O(n), ce qui signifie qu'il ne fait que n comparaisons pour n valeurs à trier (en réalité, pour des raisons d'intervalles, il n'en fait que n-1). VII. ETUDE PRATIQUE : Listes chainés Fonction calculant la longueur de la liste : Fonction recherche d’un élément : int lengthList(llist L) { int n=0; llist p=L; while(p!=NULL) { n++; p=p->nxt; } return n; } int rechercherElement(llist liste, char *valeur) { simple *tmp=liste; int i=0;
  • 10. Rapport Mini-projet Page 9 Fonction tri à bulles : Fonction tri par insertion : llist Tribulles(llist L) {int taille=sizeof(char*); llist Temp=(llist)malloc(taille); llist temp=L,temp2; int i,j; int n=lengthList(L); for(i=0;i<n-1;i++){ temp=L;temp2=temp->nxt; while(temp2!=NULL) { if(strcmp(temp2->val,temp->val)<0) { Temp->val=temp->val; temp->val=temp2->val; temp2->val=Temp->val;} temp=temp->nxt;temp2=temp2->nxt; } } } void trier(llist l){ llist temp, temp1, temp2; temp=temp1=temp2=NULL; char *min;
  • 11. Rapport Mini-projet Page 10 Fonction ajout en fin d’une liste: llist ajouterEnFin(llist liste, char *valeur) { simple* nouvelElement = malloc(sizeof(simple)); /* On assigne la valeur au nouvel élément */ nouvelElement->val = valeur; /* On ajoute en fin, donc aucun élément ne va suivre */
  • 13. Rapport Mini-projet Page 12 Fonction main: int main() { float temps; clock_t debut, fin; char a[50]; llist liste=NULL; FILE *fich; char *C=malloc(sizeof(C)); char* v=NULL; fich=fopen("exemple.txt","r");/*ouverture de notre fichier*/ if(fich!=NULL){ while(!feof(fich) ){ fscanf(fich,"%s",C); v=malloc(strlen(C)+1); /*on alloue de la mémoire notre chaine +1*/ strcpy(v,C); liste = ajouterEnFin(liste, v);/*on remplie la chaine*/ } } fclose(fich); int choixMenu;/*menu*/ printf("---Menu---nn"); printf("1.afficher votre liste!n"); printf("2.chercher un element!n"); printf("3.Trier la liste (tri par insertion)!n"); printf("4.Trier la liste (tri à bulles)!n"); printf("nVotre choix?nn"); scanf("%d", &choixMenu);
  • 14. Rapport Mini-projet Page 13 int S; switch(choixMenu) {case 1: debut = clock(); afficherListe(liste); printf("nn"); fin= clock(); temps = (float)(fin-debut)/CLOCKS_PER_SEC; printf("ntemps = %fn", temps); printf("vous voulez continuer taper 1 pour continuer et 0 pour exit"); scanf("%d",&S); switch (S) { case 1: main(); break; case 0: break;} break; case 2: debut = clock(); printf("donner l'element à chercher"); scanf("%s",&a); int p=Recherche(liste,a); printf("la valeur cherchée est trouve %dnn",p); fin= clock(); temps = (float)(fin-debut)/CLOCKS_PER_SEC; printf("ntemps = %fn", temps); printf("vous voulez continuer taper 1 pour continuer et 0 pour exit"); scanf("%d",&S);
  • 15. Rapport Mini-projet Page 14 switch (S) { case 1: main(); break; case 0: return 0; } main(); break; case 3: debut = clock(); trier(liste); afficherListe(liste); fin= clock(); temps = (float)(fin-debut)/CLOCKS_PER_SEC; printf("ntemps = %fn", temps); printf("vous voulez continuer taper 1 pour continuer et 0 pour exit"); scanf("%d",&S); switch (S) { case 1: main(); break; case 0: return 0; } break;
  • 16. Rapport Mini-projet Page 15 case 4: debut = clock(); Tribulles(liste); afficherListe(liste); fin= clock(); temps = (float)(fin-debut)/CLOCKS_PER_SEC; printf("ntemps = %fn", temps); printf("vous voulez continuer taper 1 pour continuer et 0 pour exit"); scanf("%d",&S); switch (S) { case 1: main(); break; case 0: return 0; } break; default: printf("Ce choix n'existe pas dans notre menu !"); break; } system("PAUSE"); return 0; }
  • 17. Rapport Mini-projet Page 16 Si on choisit 1 : Si on choisit 2 : Si on choisit 3:
  • 19. Rapport Mini-projet Page 18 Tableaux Fonction recherche d’un élément : Fonction tri à bulles : int recherche(char tab[max][Ma],char val[10]) { int i,a; for(i=0;i<max;i++) { if(strcmp(val,tab[i])==0) { a=i; break; } } return a; } void tribulles(char t[max][Ma],int n) { int i,j; char cle[30]; for(i=0;i<n;i++) { for(j=n-1;j>=i+1;--j) { if(strcmp(t[j-1],t[j])<0) { strcpy(cle,t[j-1]); strcpy(t[j-1],t[j]); strcpy(t[j],cle); } }
  • 20. Rapport Mini-projet Page 19 Fonction tri par insertion : void triInsertion ( char tab[max][Ma],int n) /*la fonction de tri par insertion ne retourne rien donc void*/ { int i,j; char cle[30]; for(i=1;i<=n;i++) /* boucle for pour parcours du tableau */ { j=i; strcpy(cle,tab[j]); while( j>=1 && strcmp(tab[j-1],cle)<0) /* boucle while qui fait le test et insert les éléments */ { strcpy(tab[j],tab[j-1]); j=j-1; strcpy(tab[j],cle); }
  • 21. Rapport Mini-projet Page 20 Fonction main : int main() { float temps; clock_t debut, fin; char ch[10]; FILE *fich; int D,i,x; char C[max]="",T[max][Ma]; char* v; fich=fopen("exemple.txt","r"); i=0; if(fich!=NULL){ while(fgets (C,max,fich)!=NULL ){ /*on prend ligne par ligne*/ v=strtok(C," "); /*on divise ligne en mot par strtok*/ while(v!=NULL && i<max){ strcpy(T[i],v); v=strtok(NULL," "); i++; } } } printf("nnn"); int choixMenu; printf("---Menu---nn"); printf("1.afficher votre tableau !n"); printf("2.chercher un element!n"); printf("3.Trier le tableau (tri par insertion)!n"); printf("4.Trier le tableau (tri à bulles)!n"); printf("nVotre choix?nn"); scanf("%d", &choixMenu); if(choixMenu==1){
  • 22. Rapport Mini-projet Page 21 int S; if(choixMenu==1){ debut = clock(); for(x=0;x<i;x++){ printf("tT[%d]=%s",x,T[x]); printf("nn");} fin= clock(); temps = (float)(fin-debut)/CLOCKS_PER_SEC; printf("ntemps = %fn", temps); printf("vous voulez continuer taper 1 pour continuer et 0 pour exit"); scanf("%d",&S); {if(S==1) main(); else return 0; } } if(choixMenu==2){ debut = clock(); printf("donner l'element à chercher"); scanf("%s",&ch); D=recherche(T,ch); printf("la valeur cherchée se trouve %da",D); fin= clock(); temps = (float)(fin-debut)/CLOCKS_PER_SEC; printf("ntemps = %fn", temps); printf("vous voulez continuer taper 1 pour continuer et 0 pour exit"); scanf("%d",&S); if(S==1) { main();} else return 0; }
  • 23. Rapport Mini-projet Page 22 if(choixMenu==3) { debut = clock(); triInsertion(T,10); for(i=0;i<10;i++){ printf(" T[%d]=%s ",i,T[i]);} fin= clock(); temps = (float)(fin-debut)/CLOCKS_PER_SEC; printf("ntemps = %fn", temps); printf("vous voulez continuer taper 1 pour continuer et 0 pour exit"); scanf("%d",&S); if(S==1) { main();} else return 0; } if(choixMenu==4) { debut = clock(); tribulles(T,10); for(i=0;i<10;i++){ printf(" T[%d]=%s ",i,T[i]);} fin= clock(); temps = (float)(fin-debut)/CLOCKS_PER_SEC; printf("ntemps = %fn", temps); printf("vous voulez continuer taper 1 pour continuer et 0 pour exit"); scanf("%d",&S); if(S==1) { main();} else return 0; }
  • 24. Rapport Mini-projet Page 23 Si on tape 1 : Si on tape 2 : else printf("Ce choix n'existe pas dans notre menu !");} }
  • 25. Rapport Mini-projet Page 24 Si on tape 3 : Si on tape 4 :
  • 26. Rapport Mini-projet Page 25 On a pour le tri par insertion ou par bulles la compléxité soit pour les listes chainées ou par les tableaus vaut O(n²) Donc pour le temps d’éxecution du tri par insertion dans le tableau : Pour les listes chainées on a : Complexité théorique Temps d’exécution avec structure 1 (tableaux) Temps d’exécution avec structure 2 (liste chainée) Algorithme 1 : tri par insertion O(n²) 0.002 0.001 Algorithme 2 : tri à bulles O(n²) 0.000 0.001 Algorithme 3 : recherche sequentielle O(n) 2.56 3.77
  • 27. Rapport Mini-projet Page 26 Pour le tri par bulle pour le tableau :
  • 28. Rapport Mini-projet Page 27 Pour le tri des listes chainées par bulle : Pour la recherche d’un mot dans le tableau : Pour la recherche d’un mot dans la liste