Structure de données et algorithmes Introduction · 2019-05-09 · anglais) ou unité de taitement...

324
Faculté Polytechnique FPMS-INFO Computer Science Department FPMS-INFO University of Mons Structure de données et algorithmes Introduction Prof. Saïd Mahmoudi

Transcript of Structure de données et algorithmes Introduction · 2019-05-09 · anglais) ou unité de taitement...

Faculté Polytechnique

FPMS-INFO

Computer Science Department

FPMS-INFO

University of Mons

Structure de données et algorithmes

Introduction

Prof. Saïd Mahmoudi

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

Sommaire

1. Introduction

2. Algorithmes

3. Architecture des ordinateurs

4. Codage de l’information

5. Structure de données

6. Architecture des ordinateurs

7. Systèmes d’exploitation

8. Mémoires

2

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 3

Informatique

• Ordinateur : une machine de traitement de l’information.

• Il est capable d’acquérir de l’information, de la stocker, de la transformer en effectuant des traitements quelconques, puis de la restituer sous une autre forme.

• Nous appelons information tout ensemble de données. On distingue généralement différents types d’informations : textes, nombres, sons, images, 3D, vidéos, etc., mais aussi les instructions composant un programme.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

4

Informatique : science du traitement automatique et rationnel de l’information en tant que support des connaissances et des communications.

Science : ensemble cohérent de connaissances relatives à certaines catégories de faits, d'objets ou de phénomènes obéissant à des lois et vérifiées par les méthodes expérimentales.

Automatique : système qui opère, fonctionne sans intervention humaine, par des moyens mécaniques, électriques, électroniques.

donc à l'aide d'une machine.

Rationnel : qui est déduit par le raisonnement et n'a rien d'empirique.donc à l'aide d'un humain.

Informatique : définition

INFORmation autoMATIQUE

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

5

• Le traitement peut être réalisé en privilégiant la puissance de la machine et en négligeant l'humain.

• Ce n'est pas la voie choisie dans cet enseignement universitaire. Nous privilégierons toujours le raisonnement humain afin que le traitement automatique soit simplifié.

• La puissance de la machine est en constant développement mais elle est toujours limitée.

• Le raisonnement humain comble considérablement ces limites.

Informatique : définition

6

Informatique : définition

Ce que n’est pas l’informatique !!

• les informaticiens ne savent pas nécessairement réparer un ordinateur enpanne, diagnostiquer un problème électronique,

• les informaticiens ne connaissent pas nécessairement toutes les nouvellesversions des programmes, ils ne savent pas toujours utiliser toutes leursfonctions, ils ne passent pas (toujours) leurs journées à tester des jeux ou àchercher des bugs.

• Rien à voir avec « bidouiller » son PC, maîtriser PhotoShop, tenir un blog ou connaître les ruses d'un jeu,

• l’informatique peut s’étudier avec un papier et un crayon, même en absenced’ordinateur.

7

Disciplines de l’Informatique• Informatique théorique (algorithmique, calculabilité,

complexité, graphes, langages formels ...)

• Programmation, génie logiciel

• Réseaux, logiciels de télécommunications, sécurité des échanges d’information

• Logiciels de base (systèmes d'exploitation, bases de données, compilateurs ...)

• Systèmes embarqués, robotique

• Images, son, multimédia, interfaces, homme/machine, infographie ...

• Systèmes d’information, ingénierie des connaissances ...• Calcul scientifique, optimisation, intelligence artificielle, bio-

informatique, traitement des langues ...

graphe de relations sous Facebook

Robot explorateur NASA

8

Quelques domaine d’application de l’Informatique

• Informatique de gestion• Comptabilité, facturation, paye, gestion des stocks et

du système de production, gestion des relationsclients, banques et bourse, aide à la décision ...

• Informatique industrielle et technologique• Conception et fabrication assistées, modélisation et

simulation de systèmes complexes, informatiqueembarquée, télécommunications et réseaux ...

• Internet• e-commerce, recherche d'informations, sécurité ...

• Et aussi disciplines scientifiques, médicales, scienceshumaines et sociales, arts ...

une salle de marchés

simulation des écoulements d'air

cartographie deconnexions du cerveau (INRIA)

9

Les métiers de l’Informatique• Métiers de l'exploitation

• Technicien de maintenance, technicien support (Hot Liner),administrateur de système d'information, de système, de réseau …

• Métiers de la conception et du développement• Analyste-programmeur, concepteur de logiciel, architecte de systèmes

d'information, web designer, ergonome ...

• Métiers de la recherche• En informatique « pure » ou appliquée à d'autres domaines

• Métiers du conseil et de l'expertise• Mise en œuvre de systèmes d'information, protocoles de sécurité,

impact sur l'organisation de l'entreprise ...

• Métiers du marketing• Ingénieur technico-commercial, chef de produit.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

10

Histoire de l’Informatique

1936 : Alan Turing publie l’article fondateur de l’informatique, et présente la « Machine de Turing », un modèle abstrait pour définir la notion d’algorithme.

Alan Turing

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

11

Histoire de l’Informatique

1936 : Alan Turing publie l’article fondateur de l’informatique, et présente la « Machine de Turing », un modèle abstrait pour définir la notion d’algorithme.

Alan Turing

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 12

Histoire de l’Informatique

État de la machine Contenu de la cellule

Écrit sur le ruban

Déplacement État suivant

État 0 Vide D État 0

État 0 + D État 0

État 1 + D État 1

La machine de Turing

Unité de commande Programme

+ + + +

Ruban = entrée

sortie et mémoire

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 13

Histoire de l’Informatique+ + + + + + +

3 4

État Contenu de la cellule

Écrit sur le ruban

Déplacement État machine suivant

État 0 Vide D État 0

État 0 + D État 1

État 1 + D État 1

État 1 Vide + D État 2

État 2 + D État 2

État 2 Vide G État 3

État 3 + Effacement D Stop

Stop Arrêt du travail

+ + + + + + +

7

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 14

Histoire de l’Informatique+ + + + + + +

3 4

État Contenu de la cellule

Écrit sur le ruban

Déplacement État machine suivant

État 0 Vide D État 0

État 0 + D État 1

État 1 + D État 1

État 1 Vide + D État 2

État 1 + D État 2

État 2 Vide G État 3

État 2 + Effacement D Stop

Stop Arrêt du travail

+ + + + + + +

7

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 15

Histoire de l’Informatique1946 : l’ENIAC, commandé par l’armée américaine est le 1er ordinateur électronique baséentièrement sur la machine de Turing. Il réalisait 100 000 additions ou 357 multiplications par seconde !

• l’ENIAC n’est pas tout à fait une machine universelle de Turing, au sens où l’algorithme(instructions) n’est pas directement traduisible dans le langage de la machine.

• L’ENIAC ne peut « lire » le code d’instructions d’une autre machine et l’exécuter à saplace.

• Il faut avoir recours à des programmeuses qui change à la main le câblage et lacircuiterie de la machine, et par conséquent l’algorithme des instructions de calcul.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 16

Histoire de l’Informatique1946 : l’ENIAC, commandé par l’armée américaine est le 1er ordinateur électronique baséentièrement sur la machine de Turing. Il réalisait 100 000 additions ou 357 multiplications par seconde !

• l’ENIAC n’est pas tout à fait une machine universelle de Turing, au sens où l’algorithme(instructions) n’est pas directement traduisible dans le langage de la machine.

• L’ENIAC ne peut « lire » le code d’instructions d’une autre machine et l’exécuter à saplace.

• Il faut avoir recours à des programmeuses qui change à la main le câblage et lacircuiterie de la machine, et par conséquent l’algorithme des instructions de calcul.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 17

L’architecture de von Neumann décompose l’ordinateur en quatre parties distinctes :

1. Le processeur est composé d’une unité arithmétique et logique (UAL ou ALU en anglais) ou unité de traitement : son rôle est d’effectuer les opérations de base et d’une unité de contrôle, chargée du séquençage des opérations ;

2. La mémoire qui contient à la fois les données et le programme exécuté par l’unité de contrôle.

3. Les dispositifs d’entrée-sortie, qui permettent de communiquer avec le monde extérieur. Les différents composants sont reliés par des bus

Histoire de l’InformatiqueL’ARCHITECTURE DE VON NEUMANN

John Von Neumann 1950 • Idée: fonctionnalité traitée comme les données• Suivre une recette (programme) • Appliquer chaque étape au ingrédients (données)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

18

L’ARCHITECTURE DE VON NEUMANN

Histoire de l’Informatique

conception de l’EDVAC

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 19

Histoire de l’Informatique2ème génération : les semi-conducteurs (1958-1964)• L'utilisation des transistors à la place des tubes permit de réduire très fortement

l’espace, la fiabilité et la consommation énergétique.• Les premiers ordinateurs entièrement transistorisés apparurent vers 1959

4ème génération : intégration poussée et micro-informatique (1970-...)

• Cette génération concerne l'ère modernede l'informatique.

• Le Cray 1, imaginé par Seymour Cray, futl'un des ordinateurs les plus puissants de lafin des années 70

3ème génération : les circuits imprimés (1964-1970)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 21

• La fin des années 70, et les années 80 ont vu l’essor remarquable de l'informatique "personnelle".

Steve Wozniak, Steve Job, Dan Kottke présentent l’Apple I (1976)

• l'apparition des microprocesseurs en 1971, puis des micro-ordinateurs en 1973 a permis le développement de l'informatique personnelle ou micro-informatique

Histoire de l’Informatique

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 22

L’Informatique moderne• Sortie en 1981 de l’IBM PC. Apparition des interfaces graphiques et de la souris (1984,

Macintosh d'Apple, X Window au MIT pour Unix) : l'ordinateur tel que vous le connaissez est né !

• Commercialisation de Windows (1985, pas vraiment graphique)

• Création de Linux (Linus Torvalds, 1991), système d'exploitation libre

• Création du Web (Tim Berners-Lee, 1991) et premier navigateur (Mosaic, 1993); création de Yahoo (1994), naissance du W3C (1994)

Deep Blue d'IBM, 1990super-ordinateurmassivement parallèle

Tim Berners Lee

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 23

• De fait, les innovations en matière de technologies électroniques n'ont cessé de se succéder : En 2010, Intel produit le Intel Core i7 (Gulftown ) avec 1 170 000 000 transistors, une finesse de gravure 0,032 mm, (1 cheveu : 100 mm) et une puissance de 147 600 MIPS.

Ipad 2

L’Informatique moderne• Création de Google (1998)

• Années 2000 : web 2.0, premiers systèmes collaboratifs, de partage et d'échanges (wiki, forums, peer to peer ...), « cloud computing »

• IBM vient d'annoncer un nouveau procédé de gravure qui va permettre de concevoir une puce de la taille d'un ongle... capable de contenir 30 milliards de transistors !

• Ces puces ne sont pas attendues avant 2020.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 24

• La loi de Moore

https://www.journaldunet.com/solutions/dsi/1173117-la-loi-de-moore-est-officiellement-enterree/

https://www.youtube.com/watch?v=03v8Xc1RmAg

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 25

• La loi de Moore

https://www.journaldunet.com/solutions/dsi/1173117-la-loi-de-moore-est-officiellement-enterree/

https://www.youtube.com/watch?v=03v8Xc1RmAg

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

https://www.youtube.com/watch?v=_d6KuiuteIA

26

Informatique : actuellement

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 27

Informatique

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 28

Algorithmes

Algorithme :

• L’algorithme est une suite de raisonnements ou d’opération qui fournit la solution d’un problème

• Procédure de résolution d’un problème ou d’un ensemble de problèmes de même type contenant des opérations bien définies portant sur des informations, s’exprimant dans une séquence définie sans ambigüité, destinée à être traduite dans un langage de programmation.

• Un programme n’est rien d’autre que la représentation d’un algorithme dans un langage plus technique compris par un ordinateur (par exemple : Assembleur, Cobol, Java, C++, . . .). Ce type de langage est appelé langage de programmation.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

29

Jeu de l'urne

• Il y a 12 boules noires et 15 boules vertes (NN + NV > 0)

• Quelle sera la couleur de la dernière boule ?

• Tirage et remise des boules

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

30

• Le problème ?

Avoir une seule boule dans l'urne

• Quelle est la solution ?

Enlever toutes les boules (sauf une)

Comment enlever des boules ?

Par le mécanisme de tirage qui est donné.

Sauf une

Est-ce réalisable ?

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

31

Restera-t-il une seule boule à la fin ?

Oui car, après chaque tirage et remise, le nombre de boules diminue de un.

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

32

• Comment mettre en œuvre la solution ?

• A l'aide d'un algorithme, un ensemble de règles opératoires dont l'application permet de résoudre un problème énoncé au moyen d'un nombre fini d'opérations.

1. Tirer deux boules de l'urne2. Si ce sont deux vertes, remettre une noire3. Si ce sont deux noires, remettre une noire4. Si ce sont une verte et une noire, remettre une verte5. S'il reste plus d'une boule, recommencer ce qui précède6. Tirer la boule et annoncer sa couleur

✓ Un algorithme est un énoncé, dans un langage défini, d’une suite d’opérations permettant de résoudre par calcul un problème.

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

33

• Recommencer ce qui précèdeimprécis ! Tout ou une partie ?

Répéter

Tirer deux boules de l'urneSi ce sont deux vertes, remettre une noireSi ce sont deux noires, remettre une noireSi ce sont une verte et une noire, remettre une verte

Jusqu'à ce qu'il reste une seule boule dans l'urne

Tirer la boule et annoncer sa couleur

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

34

Opération nouvelle : boucle post-testée do {…} while (…)

• Problème : il est nécessaire de prouver que la condition sera satisfaite à un moment donné.

• Cette condition est appelée le gardien de la boucle.

Répéter

(corps de la boucle)

Jusqu'à ce que (une condition est satisfaite)

Jeu de l’urneItération

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

35

Problème : que se passe-t-il s'il n'y a pas au moins deux boules dans l'urne ?

Erreur !

• Tirer deux boules de l'urne est impossible.

• Il est donc nécessaire de vérifier au préalable si les conditions d'activation de la boucle sont satisfaites.

• Notion nouvelle : préconditions de la boucle

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

36

Tant qu'il reste plus d'une boule faire

débutTirer deux boules de l'urneSi ce sont deux vertes, remettre une noireSi ce sont deux noires, remettre une noireSi ce sont une verte et une noire, remettre une verte

fin

Tirer la boule et annoncer sa couleur

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

37

Tant que (une condition est satisfaite) faire

début

(corps de la boucle)

fin

Opération nouvelle : boucle pré-testéewhile (…)

{…}

Cette boucle est donc plus générale que la précédente.

Problème : il est nécessaire de prouver que la condition sera satisfaite à un moment donné (boucle infinie).

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

38

Soient NT : nombre total de boulesNV : nombre de boules vertesNN : nombre de boules noires

NT = NV + NN

Tant qu'il reste plus d'une boule faire …

Jeu de l’urne

A chaque fois, compter le nombre de boules ? Trop de calcul !

o A chaque itération, le nombre de boules diminue de un. o Or on connaît le nombre de boules initiales.

On pourrait écrire Tant que (NT > 1) faire …

mais il y a mieux ! …

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

39

Pour i variant de NT à 2 faire

débutTirer deux boules de l'urneSi ce sont deux vertes, remettre une noireSi ce sont deux noires, remettre une noireSi ce sont une verte et une noire, remettre une verte

fin

Tirer la boule et annoncer sa couleur

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

40

Pour (compteur) variant de (débcompt) jusque (fincompt) faire

début

(corps de la boucle)

fin

Opération nouvelle : boucle définie(for (i = dc ; i<= fc; i ++) {…})

• Cette boucle est excellente lorsque l'on connaît le nombre d'itérations nécessaires.

• Pas de problème de gardien pour autant que l'on ne modifie pas le compteur dans le corps de la boucle.

• Le compteur est géré automatiquement par l'instruction de boucle définie.

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

41

compteur = 0 ; Tant que ( compteur < N )

débutcorps de la boucle ;compteur = compteur + 1;

fin

• Remarque: la boucle « Tant que » est la plus générale.• Elle peut remplacer la boucle « Pour … faire » avec les instructions suivantes :

Elle peut remplacer la boucle « Pour … faire » puisque le gardien (la condition) est vérifié avant d'effectuer la boucle.

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

42

Pour i variant de NT à 2 fairedébut

Tirer deux boules de l'urne(supposons qu'il existe une procédure pour accomplir cela)

Si ce sont deux vertes, remettre une noire…

Si ce sont deux vertes : comment accomplir ce test ?

Nous sommes capables de faire cela simultanément,la machine qui nous intéresse n'en est pas capable.

Elle doit simplifier, affiner le problème et traiter une boule à la fois.

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

43

Si la première boule est verte

alorsSi la deuxième boule est verte

alors remettre une noiresinon (c'est donc une noire) remettre une verte

sinon (c'est donc une noire)Si la deuxième boule est noire

alors remettre une noiresinon (c'est donc une verte) remettre une verte

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

44

Opération nouvelle : sélection if (…) {…} else {…}

Si (une condition est satisfaite)alors

(opération(s) à accomplir)sinon

(opération(s) à accomplir)

Remarques:• sinon est optionnel• il est possible d'imbriquer des sélections• notez l'indentation des "alors" et "sinon" indispensables pour la lisibilité

Condition

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

45

Pour i variant de NT à 2 fairedébut

Tirer deux boules de l'urneSi la première boule est verte

alorsSi la deuxième boule est verte

alors remettre une noiresinon remettre une verte

sinon (c'est donc une noire)Si la deuxième boule est noire

alors remettre une noiresinon (c'est donc une verte) remettre une verte

finTirer la boule et annoncer sa couleur

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

46

Pour i variant de NT à 2 fairedébutTirer deux boules de l'urneSi la première boule est vertealorsSi la deuxième boule est vertealors remettre une noiresinon remettre une vertesinon (c'est donc une noire)Si la deuxième boule est noirealors remettre une noiresinon (c'est donc une verte) remettre une vertefinTirer la boule et annoncer sa couleur

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 47

Jeu de l’urne

• Complexité (recherche dans un tableau)

• un algorithme de recherche de complexité exponentielle, exécuté sur une machine pouvant effectuer un milliard de comparaisons par secondes,

• prendrait plus de dix mille milliards d’années pour trouver une valeur dans un tableau de 100 éléments

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 48

Pour i variant de NT à 2 faire…

Donc, il est nécessaire de répéter (NT – 1) fois le corps de la boucle.

Nous avons un algorithme de complexité O(N) avec N qui est la taille des données.

Nous avons un algorithme itératif pour solutionner notre problème.

Est-ce le meilleur ?

Critère : temps opératoire donc nombre d'opérations à accomplir.

Jeu de l’urne

Peut-on trouver mieux ?

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 49

• Le mécanisme de tirage – remise est itératif.

• Y a-t-il une propriété dans ce mécanisme qui reste vraie à chaque tirage –remise et que nous pourrions utiliser pour trouver une meilleure solution ?

NV = NV – 2 ; NN = NN + 1

NV = NV ; NN = NN – 1

NV = NV ; NN = NN – 1

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 50

Il y a 12 boules noires et 15 boules vertes.La dernière sera verte.

• La parité des boules vertes reste inchangée.

• Si le nombre initial de boules vertes est impair, la dernière boule sera verte,

• Sinon elle sera noire.

• S'il y a 12.345.679 boules noires et 20.150.202 boules vertes, la dernièreboule sera noire.

Jeu de l’urne

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 51

L'algorithme trouvé se transforme en un algorithme trivial

Si NV est pairalors la dernière boule est noiresinon elle est verte

Complexité de l'algorithme : indépendante de N.

Le traitement automatique fournit une solution en O(N),le traitement rationnel fournit une solution indépendante de N.

Jeu de l’urne

Conclusion: pour construire un bon algorithme, il faut raisonner !

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 52

Informatique : science du traitement automatique et rationnel de l’information en tant que support des connaissances et des communications.

Algorithme : ensemble de règles opératoires dont l'application permet de résoudre un problème énoncé au moyen d'un nombre fini d'opérations.

Contrainte pour l'énoncé des règles opératoires : la machine utilisée ne peut accomplir qu'une tâche à la fois de manière séquentielle.

Algorithmes

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

53

Boucle post-testée (do {…} while (…))Répéter (corps de la boucle) jusqu'à ce que (une condition est satisfaite)

Boucle pré-testée (while (…) {…})Tant que (une condition est satisfaite) faire

début (corps de la boucle) fin

Boucle définie (for (i = dc ; i<= fc; i ++) {…})Pour (compteur) variant de (débcompt) jusque (fincompt) faire

début (corps de la boucle) fin

Sélection (if (…) {…} else {…})Si (une condition est satisfaite)

alors (opération(s) à accomplir)sinon (opération(s) à accomplir)

Algorithmes

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 54

• Un Robot se déplace dans un domainerectangulaire de dimensions finies, divisé encases. Cet espace sera délimité par unefrontière.

• Les cases pourront être vides ou contenir untrésor.

• Le Robot sait réaliser quelques actionsélémentaires et faire quelques observationssur son environnement.

Le robot

Le Robot ne comprend que deux instructions de base:• Avancer : Le Robot avance dans sa direction d'une case. S'il se trouvait devant un

mur, le programme s'arrête et vous invective.• Pivoter à droite : Le Robot tourne d'un quart de tour vers la droite (ou, dans le

sens des aiguilles d'une montre).

http://jrobot.gforge.inria.fr/

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 55

Le Robot peut faire quelques tests sur son environnement afin de prendre desdécisions :

• Devant Mur : La case devant lui est-elle un mur ? La réponse est oui s'il setrouve devant un mur, non dans tous les autres cas.

• Devant Marque : La case devant lui est-elle marquée ? La réponse sera non s'ilse trouve devant une case non marquée ou devant un mur, oui dans le cascontraire.

• Sur Marque : Le Robot se trouve-t-il sur une case marquée ?• Devant Trésor : La case devant lui contient-elle un trésor ? La réponse

sera non s'il se trouve devant une case vide ou devant un mur, oui dans le cascontraire.

• Sur Trésor : Le Robot est-il sur le trésor ?

Le robot

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 56

Le robotInstructions de base :

Le robot est capable de gérer deux structures de contrôle :

• si ... alors ... sinon ...

• la boucle tant que ... faire ...

Les autres actions

• Marquer : Dépose une marque sur la case où se trouve le Robot. Si la case était déjà marquée, un message d'avertissement est affiché.

• Effacer marque : Enlève la marque sur la case où se trouve le Robot. Si la case n'était pas marquée, un message d'avertissement est affiché.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 57

Le robot

Exercice : avancer de deux casesConditions initiales : • La position et la direction du robot sont aléatoires• La position du trésor n’est pas importante

But : Le robot doit avancer de deux cases dans la direction vers laquelle il regarde.

• Si vous avez trouvé la solution ci-dessus, exécutez-la de nombreuses fois, vous finirez par tomber sur un cas où cela ne se passe pas bien. Pouvez-vous identifier quel est le problème ?

Test :

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 58

But : Le robot doit avancer de deux cases tout droit (dans la direction vers laquelle il regarde). Si un mur l’en empêche, il devra s’arrêter juste devant le mur.

Le robot

Exercice : Le robot doit avancer jusqu’au mur devant lui ets’y arrêter.Conditions initiales : • La position et la direction du robot sont aléatoires• La position du trésor n’est pas importante

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 59

Le robot

Exercice : Le robot doit avancer jusqu’au mur devant lui et s’y arrêter.Conditions initiales : • La position et la direction du robot sont aléatoires• La position du trésor n’est pas importante

o On peut demander à l’ordinateur de répéter des instructions. o On lui fournit également une condition qui lui permet de savoir s’il doit continuer

ou non cette tâche répétitive.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 60

• Le Robot est n'importe où sur le terrain, orienté vers le nord. Aller jusqu'au coin

nord-est.

Le robot

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 61

• Le Robot est n'importe où sur le terrain, orienté vers le nord. Aller jusqu'au coin

nord-est.

Procédures

• L’algorithme devient répétitifcar il contient du code dupliqué

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 62

• Le Robot est n'importe où sur le terrain, orienté vers le nord. Aller jusqu'au coin

nord-est.

Procédures

Même code

• L’algorithme devient répétitifcar il contient du code dupliqué

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 63

• On peut créer une procédure pour rendre le code plus lisible.

Procédure : Jusque Mur

Procédures

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 64

• On peut créer une procédure pour rendre le code plus lisible.

Procédure : Jusque Mur

Procédures

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 65

• Une procédure (on dira aussi module, fonction ou méthode) est une portiond’algorithme auquel on a donné un nom et qui peut être « utilisé » (appelé) dansd’autres algorithmes.

• Lorsque le robot rencontre un nom de procédure, il exécute toutes les instructionsde cette procédure puis revient continuer le premier algorithme là où il a étéinterrompu.

Procédures

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 66

But : Le robot doit avancer jusqu’au mur devant lui, faire demi-tour et revenir à sa position de départ.

Conditions initiales• La position et la direction du robot sont

aléatoires• La position du trésor n’est pas importante

Le robot

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 67

Procédures :

• Dans ce genre de problèmes on estsouvent amené à demander au robot defaire demi-tour.

• À la lecture de l’algorithme, il n’apparaitpas clairement qu’on demande au robotd’effectuer un demi-tour (en tout casmoins clairement que si on trouvaitexplicitement l’ordre « demi-tour »).

Le robot

Procédure

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 68

Le robot

• Le Robot est sur le bord sud,orienté ers le nord. Faire letour du terrain dans le sensdes aiguilles d'une montre etrevenir à sa case de départ.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 69

Le robot

• Le Robot est sur le bord sud,orienté ers le nord. Faire letour du terrain dans le sensdes aiguilles d'une montre etrevenir à sa case de départ.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 70

Le robot

• Le Robot est sur le bord sud,orienté ers le nord. Faire letour du terrain dans le sensdes aiguilles d'une montre etrevenir à sa case de départ.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 71

Le robot

1. Le Robot se trouve dans sur le bord Ouest,orienté vers le nord. Le trésor se trouve sur lebord ouest. Dirigez le robot vers le trésor.

2. Le Robot se trouve sur le bord Ouest. Le trésorest soit dans le bord Ouest soit dans le bordNord. Dirigez le robot vers le trésor

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 72

Le robot

1. Le Robot se trouve dans sur le bord Ouest,orienté vers le nord. Le trésor se trouve sur lebord ouest. Dirigez le robot vers le trésor.

2. Le Robot se trouve sur le bord Ouest. Le trésorest soit dans le bord Ouest soit dans le bordNord. Dirigez le robot vers le trésor

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 73

Le robot

1. Le Robot se trouve dans sur le bord Ouest,orienté vers le nord. Le trésor se trouve sur lebord ouest. Dirigez le robot vers le trésor.

2. Le Robot se trouve sur le bord Ouest. Le trésorest soit dans le bord Ouest soit dans le bordNord. Dirigez le robot vers le trésor

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 74

Le robot

• Le Robot se trouve dans le coin sud-ouest. On ne connaît pas son orientation.Orientez le vers le nord.

• Le Robot se trouve n'importe où dans le terrain. Placez le dans un coin.

• Le Robot se trouve dans le coin sud-ouest, orienté vers le nord. Le trésor setrouve sur un bord du terrain. Aller jusqu'au trésor.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 75

• Le robot est n’importe ou orienté vers lenord. Aller jusqu'au coin nord-est et retour.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

76

Le drapeau tricolore (Dijkstra)

• On dispose de N cellules colorées (B, W, R), indexées de 0 à N-1.

• Il convient de les regrouper par couleur en utilisant le même support de stockage.

• Problème : trier les cellules par ordre "croissant".• Contrainte : même support de stockage

• Solution : ?

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

77

• Mémoriser le résultat de la comparaison dans la même structure de stockage, soit :

• Si R (rouge) et (W ou B) alors permuterSinon passer à la cellule suivante

• Si W (blanc) et B (bleu) alors permuterSinon passer à la cellule suivante

• Si B (bleu) alors passer à la cellule suivante

Le drapeau tricolore (Dijkstra)

• Regarder successivement, à partir des 2 premières, les cellules et les comparer 2 à 2.

• Répéter ces opérations jusqu'à ce que toutes les cellules soient triées.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

78

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

79

Tant que (drapeau non trié) fairedébut

parcourir drapeau;

permuter deux cellules si nécessaire;

fin

Le drapeau tricolore (Dijkstra)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

80

Tant que (drapeau non trié) fairedébut

parcourir drapeau;

permuter deux cellules si nécessaire;

fin

Tant que (drapeau non trié) faire

début

commencer au début du drapeau;

Pour i variant de 0 à N – 2 faire

si cellule [i] ">" cellule [i+1]

alors permuter cellules;

/*la cellule la plus "grande" est à la fin*/

fin

Problème : drapeau non trié ? Comment le savoir ?

Le drapeau tricolore (Dijkstra)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

81

répéterpermutation = FALSE;commencer au début du drapeau;

Pour i variant de 0 à N – 2 faire

si cellule [i] ">" cellule [i+1]

alors

début

permuter cellules;

permutation = TRUE;

fin

jusqu'à ce que (not permutation)

Trié ? Lorsqu'il n'y a plus de permutation lors d'un parcours

Le drapeau tricolore (Dijkstra)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

82

répéterpermutation = FALSE;commencer au début du drapeau;

Pour i variant de 0 à N – 2 faire

si cellule [i] ">" cellule [i+1]

alors

début

permuter cellules;

permutation = TRUE;

fin

jusqu'à ce que (not permutation)

Trié ? Lorsqu'il n'y a plus de permutation lors d'un parcours

Le drapeau tricolore (Dijkstra)

C’est le principe du tri à bulles

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

83

• Complexité de l'algorithme (tri à bulles – bubble sort)

• répétercommencer au début du drapeau;

• jusqu'à ce que …

• Boucle à répéter (N – 1) fois (dans la plus mauvaise situation)

• Pour i variant de 0 à N – 2 faire …

• Boucle à accomplir (N – 1) fois

• Complexité : O(N²) Proportionnel à N² permutations

Le drapeau tricolore (Dijkstra)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

84

4 3 2 1

3 4 2 1

3 2 4 1

3 2 1 4

2 3 1 4

2 1 3 4

2 1 3 4

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

Tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

85

4 3 2 1

3 4 2 1

3 2 4 1

3 2 1 4

2 3 1 4

2 1 3 4

2 1 3 4

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

Tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

86

4 3 2 1

3 4 2 1

3 2 4 1

3 2 1 4

2 3 1 4

2 1 3 4

2 1 3 4

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

Tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

87

4 3 2 1

3 4 2 1

3 2 4 1

3 2 1 4

2 3 1 4

2 1 3 4

2 1 3 4

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

Tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

88

4 3 2 1

3 4 2 1

3 2 4 1

3 2 1 4

2 3 1 4

2 1 3 4

2 1 3 4

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

Tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

89

4 3 2 1

3 4 2 1

3 2 4 1

3 2 1 4

2 3 1 4

2 1 3 4

2 1 3 4

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

Tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

90

4 3 2 1

3 4 2 1

3 2 4 1

3 2 1 4

2 3 1 4

2 1 3 4

2 1 3 4

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

Tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

91

4 3 2 1

3 4 2 1

3 2 4 1

3 2 1 4

2 3 1 4

2 1 3 4

2 1 3 4

1 2 3 4

1 2 3 4

1 2 3 4

O (N²)

1 2 3 4

Tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

92

4 3 2 1

3 4 2 1

3 2 4 1

3 2 1 4

2 3 1 4

2 1 3 4

2 1 3 4

1 2 3 4

1 2 3 4

1 2 3 4

O (N²)

1 2 3 4

O (N)

Tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 93

Algorithme du tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 94

Algorithme du tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 95

Algorithme du tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 96

Algorithme du tri à bulle

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 97

Tri par sélection

• L'idée du tri du consiste à chaque étape à rechercher le plus petit élément non

encore trié et à le placer à la suite des éléments déjà triés.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 98

void triSelection(int tab[], int const taille){int i, min, j;

for (i = 0; i < taille - 1; ++i){

min = i;for (j = i + 1; j < taille; ++j){

if (tab[j] < tab[min]){

min = j;}

}if (min != i){

std::swap(tab[i], tab[min]); }

}}

Tri par sélection

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 99

void triSelection(int tab[], int const taille){int i, min, j;

for (i = 0; i < taille - 1; ++i){

min = i;for (j = i + 1; j < taille; ++j){

if (tab[j] < tab[min]){

min = j;}

}if (min != i){

échanger(tab[i], tab[min]); }

}}

Tri par sélection

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 100

Tri insertion

Le principe du tri par insertion est de trier les éléments du tableau comme avec des cartes :

• On prend nos cartes mélangées dans notre main.

• On crée deux ensembles de carte, l’un correspond à l’ensemble de carte triée, l’autre contient l’ensemble des cartes restantes (non triées).

• On prend au fur et à mesure, une carte dans l’ensemble non trié et on l’insère à sa bonne place dans l’ensemble de carte triée.

• On répète cette opération tant qu’il y a des cartes dans l’ensemble non trié.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 101

void tri_insertion(double* t, int n){int i, j;double elementInsere;

for (i = 1; i < n; i++) {/* Stockage de la valeur en i */elementInsere = t[i];/* Décale les éléments situés avant t[i] vers la droitejusqu'à trouver la position d'insertion */for (j = i; j > 0 && t[j - 1] > elementInsere; j--)

{t[j] = t[j - 1];

}/* Insertion de la valeur stockée à la place vacante */t[j] = elementInsere;}

}

Tri insertion

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

102

L'algorithme de tri en tas (Heap sort) a une complexité en

O (N log N).

C'est le mieux que l'on puisse obtenir.

• Lorsque l'on recherche le meilleur algorithme, on vise d'abord un algorithme en O(N) puisqu'il faut au moins regarder une fois toutes les données.

• Cependant, comme dans le jeu de l'urne, si les données ont des propriétés intéressantes, on peut viser une complexité moindre.

Complexité

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

103

• La solution est obtenue avec trois zones (B, W, R).

Zone B commençant en 0 Zone W commençant en 10 Zone R commençant en 20

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

• Quelle propriété utiliser ?

Le drapeau tricolore (Dijkstra)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

104

• La solution est obtenue avec trois zones (B, W, R).

• Au début, ces trois zones n'existent pas. Il n'existe qu'une zone de cellules non classées

• A chaque itération, regardons la première cellule de la zone à classer et plaçons-ladans la zone de sa couleur.

Zone B commençant en 0 Zone W commençant en 10 Zone R commençant en 20

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Zone à classer (AC) commençant en 0

• Quelle propriété utiliser ?

Le drapeau tricolore (Dijkstra)

• Si nous agissons de la sorte, à chaque itération, la zone à classer se réduit de uneunité et les zones classées grandissent avec les cellules de couleur appropriée.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

105

Soient ZW = 0 (début de la zone des blanches)

ZR = 0 (début de la zone des rouges)

ZAC = 0 (début de la zone à classer)

• Après quelques itérations, on a :

Si c'est une blanchealors

débutPermuter cellule [ZAC] et cellule [ZR]ZAC = ZAC + 1ZR = ZR + 1

fin

ZW = 4 ZR = 7 ZAC = 10

0 1 2 3 4 5 6 7 8 9 10 11

ZW = ZR = ZAC = 0

Le drapeau tricolore (Dijkstra)

Si c'est une blanchealors

débutPermuter cellule [ZAC] et cellule [ZR]ZAC = ZAC + 1ZR = ZR + 1

fin

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

106

Soient ZW = 0 (début de la zone des blanches)

ZR = 0 (début de la zone des rouges)

ZAC = 0 (début de la zone à classer)

• Après quelques itérations, on a :

Si c'est une blanchealors

débutPermuter cellule [ZAC] et cellule [ZR]ZAC = ZAC + 1ZR = ZR + 1

fin

ZW = ZR = ZAC = 0

Le drapeau tricolore (Dijkstra)

ZW = 4 ZR = 8 ZAC = 11

0 1 2 3 4 5 6 7 8 9 10 11

Si c'est une blanchealors

débutPermuter cellule [ZAC] et cellule [ZR]ZAC = ZAC + 1ZR = ZR + 1

fin

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

107

ZW = 4 ZR = 8 ZAC = 11

0 1 2 3 4 5 6 7 8 9 10 11

On obtient :

Le drapeau tricolore (Dijkstra)

Si c'est une rougealors

ZAC = ZAC + 1

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

108

Le drapeau tricolore (Dijkstra)

ZW = 4 ZR = 8 ZAC = 13

0 1 2 3 4 5 6 7 8 9 10 11 12 13

Si c'est une rougealors

ZAC = ZAC + 1

2 itérations plus loin,

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

109

Si c'est une bleuealors

débutPermuter cellule [ZAC] et cellule [ZR]Permuter cellule [ZR] et cellule [ZW] ZAC = ZAC + 1ZR = ZR + 1ZW = ZW + 1

fin

ZW = 4 ZR = 8 ZAC = 13

0 1 2 3 4 5 6 7 8 9 10 11 12 13

Le drapeau tricolore (Dijkstra)On obtient :

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

110

• 2 itérations plus loin,

Si c'est une bleuealors

débutPermuter cellule [ZAC] et cellule [ZR]Permuter cellule [ZR] et cellule [ZW] ZAC = ZAC + 1ZR = ZR + 1ZW = ZW + 1

fin

Le drapeau tricolore (Dijkstra)

ZW = 5 ZR = 9 ZAC = 14

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Si c'est une bleuealors

débutPermuter cellule [ZAC] et cellule [ZR]Permuter cellule [ZR] et cellule [ZW] ZAC = ZAC + 1ZR = ZR + 1ZW = ZW + 1

fin

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

111

( Pour ZAC variant de 0 à N-1 faire )début

Si c'est une rougealors ZAC = ZAC + 1;sinon Si c'est une blanche

alors débutPermuter cellule [ZAC] et cellule [ZR]ZAC = ZAC + 1ZR = ZR + 1

fin;sinon /*c'est donc une bleue*/

débutPermuter cellule [ZAC] et cellule [ZR]Permuter cellule [ZR] et cellule [ZW] ZAC = ZAC + 1ZR = ZR + 1ZW = ZW + 1

fin;fin

Le drapeau tricolore (Dijkstra)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

112

répéterSi c'est une rougealors ZAC = ZAC + 1;sinon Si c'est une blanche

alors débutPermuter cellule [ZAC] et cellule [ZR]ZAC = ZAC + 1ZR = ZR + 1

fin;sinon /*c'est donc une bleue*/

débutPermuter cellule [ZAC] et cellule [ZR]Permuter cellule [ZR] et cellule [ZW] ZAC = ZAC + 1ZR = ZR + 1ZW = ZW + 1

fin;jusqu'à ce que ZAC = N

Le drapeau tricolore (Dijkstra)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

113

• Complexité de l'algorithme

Combien de permutations ?

Rouge: 0 permutation * NR (nombre de cellules rouges)

White : 1 permutation * NW (nombre de cellules blanches)

Bleue : 2 permutations * NB (nombre de cellules bleues)

Total : NW + 2 * NB

Si NR == NW == NB == N/3, alors N permutations.

Complexité: O(N) au lieu de O(N²) pour le tri à bulles.

Peut-on améliorer ?

Complexité

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

114

• Les bleues sont très pénalisantes. Pourquoi ?

ZW = 4 ZR = 8 ZAC = 13

0 1 2 3 4 5 6 7 8 9 10 11 12 13

Nous devons amener des cellules dans des zones à partir de la zone à classer. Comment réduire la "distance à parcourir" ?

En plaçant la zone à classer au centre des autres zones,

ZW = 4 ZAC = 8 ZR = 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Le drapeau tricolore (Dijkstra)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

115

ZW = 4 ZAC = 8 ZR = 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Si c'est une bleue, une permutation :

ZW = 5 ZAC = 9 ZR = 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Si c'est une blanche, pas de permutation :

ZW = 5 ZAC = 10 ZR = 25

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Si c'est une rouge, une permutation :

ZW = 5 ZAC = 10 ZR = 24

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

116

Soient ZW = 0 (début de la zone des blanches)ZR = N (début de la zone des rouges)ZAC = 0 (début de la zone à classer)

répéterSi c'est une rougealors début

Permuter cellule [ZAC] et cellule [ZR - 1]ZR = ZR - 1

fin;sinon Si c'est une blanche

alors ZAC = ZAC + 1sinon /*c'est donc une bleue*/

débutPermuter cellule [ZAC] et cellule [ZW]ZAC = ZAC + 1ZW = ZW + 1

fin;jusqu'à ce que ZAC = ZR

Le drapeau tricolore (Dijkstra)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

117

• Complexité de l'algorithme

Rouge: 1 permutation * NR (nombre de cellules rouges)White : 0 permutation * NW (nombre de cellules blanches)Bleue : 1 permutation * NB (nombre de cellules bleues)Total : NR + NBSi NR == NW == NB == N/3, alors 2*N / 3 permutations.En moyenne, le second algorithme est meilleur que le premier.

Le premier algorithme est-il parfois meilleur ?Peut-on avoir :

NW + 2NB < NR + NB, soitNW + NB < NR, soitNW + NB + NR (== N) < 2NR ?

Oui, si plus de la moitié des cellules sont rouges (en effet, dans le premier algorithme, il n'y a pas de permutation pour les rouges)

Le drapeau tricolore (Dijkstra)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

118

Permuter cellule [ZAC] et cellule [ZR - 1]

interm = cellule [ZAC];cellule [ZAC] = cellule [ZR - 1];cellule [ZR - 1] = interm;

Permuter cellule [ZAC] et cellule [ZW]

interm = cellule [ZAC];cellule [ZAC] = cellule [ZW];cellule [ZW] = interm;

Séquentialité des opérations

Procédures et fonctions

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

119

Plutôt que permuter deux éléments d'un tableau, permutons deux éléments quelconques que nous appelons

elemdepart et elemarrivee

Procédures et fonctions

• A quelques lignes d'intervalle, nous réécrivons alors le même ensemble d'instructions. Donc on peut utiliser des procédures

eleminter = cellule [inddepart];cellule [inddepart] = cellule [indarrivee];cellule [indarrivee] = eleminter;

• Soyons encore plus général.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

120

eleminter = elemdepart;elemdepart = elemarrivee;elemarrivee = eleminter;

• Cet ensemble d'instructions réalise une permutation quels que soient le type des éléments à permuter

• et peut être utilisé pour autant que l'on donne des valeurs et un endroit de mémorisation à ces éléments.

Procédures et fonctions

• Nous obtenons alors :

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

121

Procédure permutation (eleminter, elemdepart, elemarrivee)

débuteleminter = elemdepart;elemdepart = elemarrivee;elemarrivee = eleminter

fin

• La procédure décrite peut être "appelée" par un programme

• Ce programme pourra l'exécuter s'il fournit les paramètres définisdans l'en-tête de la procédure.

Procédures et fonctions

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

122

répéterSi c'est une rouge

alors débutpermutation (interm, cellule [ZAC], cellule [ZR - 1])ZR = ZR – 1

fin;sinon

Si c'est une blanchealors ZAC = ZAC + 1sinon /*c'est donc une bleue*/

débutpermutation (interm, cellule [ZAC], cellule [ZW])

ZAC = ZAC + 1ZW = ZW + 1

fin;jusqu'à ce que ZAC = ZR

Procédures et fonctions

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

123

Définition de la procédure

Procedure permutation (eleminter, elemdepart, elemarrivee)début

eleminter = elemdepart;elemdepart = elemarrivee;elemarrivee = eleminter;

fin

Appel de la procédure

permutation (interm, cellule [ZAC], cellule [ZR - 1]);Le programme appelant met :interm dans elemintercellule [ZAC] dans elemdepartcellule [ZR - 1] dans elemarrivee

(pour autant que les types correspondants soient identiques)

Procédures et fonctions

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

124

Procédures et fonctions

3. Les résultats doivent alors être renvoyés vers le programme appelant.

• Quels résultats ?• Uniquement les résultats utiles !

• Dans notre exemple, eleminter n'est pas utile.

• La valeur obtenue dans la procédure ne doit pas "retourner" dans le programme appelant et la valeur interm du programme appelant peut rester inchangée.

1. Le programme appelant envoie des données dans la procédure.

2. La procédure réalise le traitement sur les données reçues.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 125

• Procedure permutation (eleminter, &elemdepart, &elemarrivee)

&elemdepart : signifie que la valeur obtenue pour elemdepart à la fin de la procédure doit être retournée dans la zone de mémorisation d'où provenait elemdepart, soit cellule [ZAC]

Procédures et fonctions

• On écrira alors

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

126

• La variable eleminter n'est utile que dans la procédure.• Définissons-la uniquement dans celle-ci. C'est une variable locale.

Procedure permutation (type &elemdepart, type &elemarrivee)début

type eleminter;

eleminter = elemdepart;elemdepart = elemarrivee;elemarrivee = eleminter;

fin

• Il reste à préciser la mémorisation des données, donc leurs types, pour que la définition de la procédure soit complète.

• On écrira alors :

Procedure permutation (type eleminter, type &elemdepart, type &elemarrivee)

Procédures et fonctions

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

127

répéterSi c'est une rouge

alors débutpermutation (cellule [ZAC], cellule [ZR - 1])ZR = ZR – 1

fin;sinon

Si c'est une blanchealors ZAC = ZAC + 1sinon /*c'est donc une bleue*/

débutpermutation (cellule [ZAC], cellule [ZW])ZAC = ZAC + 1ZW = ZW + 1

fin;jusqu'à ce que ZAC = ZR

Procédures et fonctions

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

128

void nommodule (paramètres formels avec leurs types)

/*Spécification du traitement que le module décrit*/

{

... corps du module …

};

On appelle un module par son nom:

nommodule (paramètres actuels);

Procédures et fonctions

• Opération nouvelle : Procédure avec paramètres

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

129

type nommodule (paramètres formels avec leurs types)

/*Spécification du traitement que le module décrit*/

{

... corps du module …

return (valeur);

};

Procédures et fonctions

• Opération nouvelle : Fonction

On appelle un module par son nom:

resultat = nommodule (paramètres actuels);

/*resultat contient alors valeur*/

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 130

Passage de paramètres : exemple

void main(){

int resultat = 0;int param1 = 10;int param2 = 20;

calcul(param1, param2, resultat);cout <<"Résultat :« << resultat << endl;}

void calcul(int param1, int param2, int resultat){

resultat = param1 + param2;

}

Résultat : ?

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 131

Passage de paramètres : exemple

void main(){

int resultat = 0;int param1 = 10;int param2 = 20;

calcul(param1, param2, resultat);cout <<"Résultat :« << resultat << endl;}

void calcul(int param1, int param2, int resultat){

resultat = param1 + param2;

}

Résultat : 0

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 132

Passage de paramètres : exemple

void main(){

int resultat = 0;int param1 = 10;int param2 = 20;

calcul(param1, param2, resultat);cout <<"Résultat :« << resultat << endl;}

void calcul(int param1, int param2, int &resultat){

resultat = param1 + param2;

}

Résultat : ?

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 133

Passage de paramètres : exemple

void main(){

int resultat = 0;int param1 = 10;int param2 = 20;

calcul(param1, param2, resultat);cout <<"Résultat :« << resultat << endl;}

void calcul(int param1, int param2, int &resultat){

resultat = param1 + param2;

}

Résultat : 30

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

134

• Une procédure peut être "appelée" par un programme qui en obtiendra l'exécution s'il fournit des valeurs et des endroits de mémorisation des paramètres définis dans l'en-tête de la procédure.

Quel programme ?

Peu importe ! Y compris toute autre procédure, y compris la procédure elle-même.

On parle alors de procédure récursive.

Fonctions Récursives

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

135

int factorielle (int N)

/*Calcule la factorielle N pour tout entier N > 0*/

{

if N == 1

{ return (1); }

else { return (N * factorielle (N-1) ); };

};

factorielle (N) = N * factorielle (N-1)

Vrai pour tout N > 1 et factorielle (1) = 1

Fonctions Récursives

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

136

factorielle (3)

if 3 == 1

{ ...

else { return ( 3 * factorielle (2) ); };

Fonctions Récursives

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

137

factorielle (3)

Fonctions Récursives

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

138

factorielle (3)

if 3 == 1

{ ...

else { return ( 3 * factorielle (2) ); };

Fonctions Récursives

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

139

factorielle (3)

if 3 == 1

{ ...

else { return ( 3 * factorielle (2) ); };

if 2 == 1

{ ...

else { return ( 2 * factorielle (1) ); };

Fonctions Récursives

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

140

factorielle (3)

if 3 == 1

{ ...

else { return ( 3 * factorielle (2) ); };

if 2 == 1

{ ...

else { return ( 2 * factorielle (1) ); };

if 1 == 1

{ return (1); }

else ...

Fonctions Récursives

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

141

1

factorielle (3)

if 3 == 1

{ ...

else { return ( 3 * factorielle (2) ); };

if 2 == 1

{ ...

else { return ( 2 * factorielle (1) ); };

if 1 == 1

{ return (1); }

else ...

Fonctions Récursives

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

142

2

1

factorielle (3)

if 3 == 1

{ ...

else { return ( 3 * factorielle (2) ); };

if 2 == 1

{ ...

else { return ( 2 * factorielle (1) ); };

if 1 == 1

{ return (1); }

else ...

Fonctions Récursives

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

143

6

2

1

factorielle (3)

if 3 == 1

{ ...

else { return ( 3 * factorielle (2) ); };

if 2 == 1

{ ...

else { return ( 2 * factorielle (1) ); };

if 1 == 1

{ return (1); }

else ...

Fonctions Récursives

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

144

• Un algorithme qui s’appelle lui-même est un algorithme récursif

• Conditions pour un algorithme récursif

– S’appeler soi-même

– Les paramètres actuels doivent se simplifier à chaque appel

– Une sortie de secours pour laquelle il n’y a plus d’appel récursif

Fonctions Récursives

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

145

• Inverser les lettres d’un mot

• ôter la première lettre;

inverser le reste du mot;

ajouter la lettre ôtée;

Fonctions Récursives

• Exemple 02 :

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

146

void inverser (séquence)

/*inverse la séquence donnée de lettres*/

{

if ( séquence ne contient qu'une lettre )

{ l'écrire; }

else

{ ôter la première lettre de la séquence;

inverser (reste de la séquence);

ajouter la lettre ôtée;

};

};

Fonctions Récursives

• Exemple 02 :

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

147

inverser "star";

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

148

inverser "star";if "star" contient une lettre

{ ... }else {ôter "s";

inverser "tar";if "tar" contient une lettre

{ ... }else {ôter "t";

inverser "ar";if "ar" contient une lettre

{ ... }else {ôter "a";

inverser "r";if "r" contient une lettre

{ l'écrire;} relse {... };

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

149

inverser "star";if "star" contient une lettre

{ ... }else {ôter "s";

inverser "tar";if "tar" contient une lettre

{ ... }else {ôter "t";

inverser "ar";if "ar" contient une lettre

{ ... }else {ôter "a";

inverser "r";if "r" contient une lettre

{ l'écrire;} relse {... };

ajouter "a"; }; ra

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

150

inverser "star";if "star" contient une lettre

{ ... }else {ôter "s";

inverser "tar";if "tar" contient une lettre

{ ... }else {ôter "t";

inverser "ar";if "ar" contient une lettre

{ ... }else {ôter "a";

inverser "r";if "r" contient une lettre

{ l'écrire;} relse {... };

ajouter "a"; }; ra

ajouter "t"; }; rat

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

151

inverser "star";if "star" contient une lettre

{ ... }else {ôter "s";

inverser "tar";if "tar" contient une lettre

{ ... }else {ôter "t";

inverser "ar";if "ar" contient une lettre

{ ... }else {ôter "a";

inverser "r";if "r" contient une lettre

{ l'écrire;} relse {... };

ajouter "a"; }; ra

ajouter "t"; }; rat

ajouter "s"; }; rats

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

152

• La tour de Hanoï

– Un anneau à la fois

– Un anneau ne peut être sur un plus petit que lui

Tour de Hanoï

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

153

• La tour de Hanoï

– Un anneau à la fois

– Un anneau ne peut être sur un plus petit que lui

Tour de Hanoï

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

154

0

1

2

3

4

5

6

7

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

155

Tour de Hanoï

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

156

Tour de Hanoï

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 157

Tour de Hanoï

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 158

Tour de Hanoï

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 159

Tour de Hanoï

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 160

Tour de Hanoï

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

161

Principe de résolution

• transférer les 63 disques supérieurs de A à C

• déplacer le disque inférieur de A à B

• transférer les 63 disques de C à B

pour 63, 62, 61, ..., 1. D’où la formulation générale :

• transférer N-1 disques du départ sur l'intermédiaire

• déplacer 1 disque du départ sur l'arrivée

• transférer N-1 disques de l'intermédiaire sur l'arrivée

Tour de Hanoï

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

162

void deplacertour (int N, depart, arrivee, intermediaire)

/* déplace une tour de N disques du départ à l'arrivée en utilisant sicela est nécessaire l'intermédiaire */

{

if ( N == 1 )

{ déplacer un disque du départ sur l'arrivée; }

else {

deplacertour (N-1, depart, intermediaire, arrivee);

déplacer 1 disque du départ sur l'arrivée;

deplacertour (N-1, intermediaire, arrivee, depart);

};

};

Tour de Hanoï

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

163

• Complexité de l’algorithme

– Lorsque N == 64, 2 appels avec N == 63, 4 appels avec N == 62, ..., 264 - 1 exécutions de l'algorithme. Il y a donc 264 - 1 déplacements à effectuer

– Si les prêtres déplacent un disque par seconde sans jamais faire une erreur, le temps nécessaire au transfert total devra être de l'ordre de

600 000 000 000 d'années !

– On peut prouver qu'il n'existe aucun algorithme plus rapide.

Tour de Hanoï

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

164

• Informatique : science du traitement automatique et rationnel de l’information en tant que support des connaissances et des communications.

• Comment représenter l'information dans la machine?

• Comment l'organiser au mieux pour les traitements?

Représentation de l’information

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

165

• Outils de l'algorithmique

o Boucles

o Sélection

o Séquence

• Méthodes algorithmiques

o Itération

o Modularité (Procédure et fonction)

o Récursivité

• Données de base

o Codage

o Mémorisation

o Opérations autorisées

• Accessibilité des données

o Structuration

o Sauvegarde

Représentation de l’information

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 166

Représentation de l’information

167

• Dans le système binaire, pour exprimer n’importe quelle valeur on utilise uniquement 2 symboles : { 0 , 1}

10

3210123

2

10

0123

2

)625,14(2*12*02*12*02*12*12*1(1110,101)

)14(2*02*12*12*1(1110)

=++++++=

=+++=

−−−

• Un nombre dans la base 2 peut être écrit aussi sous la forme polynomial

( 1101)2La base

Un bit

( 1 1 0 1)2Le bits du poids forts Le bits du poids faible

Représentation de l’information

168

Comptage en binaire

• Sur un seul bit : 0 , 1

Décimal Binaire

0

1

2

3

00

01

10

11

• Sur 3 Bits

Décimal Binaire

0

1

2

3

4

5

6

7

000

001

010

011

100

101

110

111

• Sur 2 bits :

4 combinaisons = 22

8 combinaisons = 23

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

169

Conversion de la base 10 à la base 2

35 2

171 2

81

2

40 2

20 2

0 1 2

1 0

Exemple 1 : (35)10=(?)2

Le principe consiste à faire des divisions successives du nombre sur 2 , et prendre le reste des divisions dans l’ordre inverse.

Après division : on obtient : (35)10=(100011)2

170

Conversion d’une base X à la base 10

• Cette conversion est assez simple puisque il suffit de faire le développement en polynôme de ce nombre dans la base X , et de faire la somme par la suite.

10

101

5

10

3210123

2

10

012012

16

10

0123

2

)4,23(4,03205*25*35*4)2,43(

)625,13(2*12*02*12*12*02*12*1(1101,101)

)423(716025616*716*1016*116*716*16*1(1A7)

)13(2*12*02*12*1(1101)

=++=++=

=++++++=

=++=++=++=

=+++=

−−−

A

Exemple :

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 171

Le complément à 2

= Complément à 1 + 1

= inversion des bits + 1

Exemple :

▪(-1)10 = 1 + compl(1)

▪= 1 + compl(000000012)

▪= 1 + 111111102

▪= 111111112 = (-1)2

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

Exemple

|N| = 0 0 1 0 1 1 0 0

1 1 0 1 0 0 1 1

+ 1

Cà2(N) = 1 1 0 1 0 1 0 0

CA2(-44) =

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

Exemple

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

La norme IEEE 754 sur 32 bits

1,mantisse * 2 exposant

12,5 = +1,1001*23 Forme normalisée

0 100 0001 0 100 1000 0000 0000 0000 0000

12,5 =(41480000)IEEE 754

Codage de 3 par excès de 127

3+127 = 128+2

= 27+21

=(10000010)2

Codage en binaire

12,5 = 8 + 4 + 0,5

12,5 = 23 + 22 + 2-1

12,5 = (1100,1)2

4 81 04 0 0 0

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

175

Représentation décimale en 5 symboles (rang 0 à 4)

4 3 2 1 0

Poids des différents rangs = 10 exposant (rang)

signe 1000 100 10 1

Nombre décimal Valeur Max Min Nombre de valeurs

- 2 0 1 6 -2016 9999 -9999 19999

= 2*(10 exposant 4)-1

car + 0 = - 0

Représentation binaire en 8 bits (rangs 0 à 7)

7 6 5 4 3 2 1 0

Poids des différents rangs = 2 exposant (rang)

128 64 32 16 8 4 2 1

Nombre binaire Valeur Max Min Nombre de valeurs

0 0 1 0 1 0 0 0 40 255 0 256

= 2 exposant 8

Poids pour la représentation des entiers positifs et négatifs

signe 64 32 16 8 4 2 1

Entier en binaire

1 1 1 1 1 1 1 1 -127 127 -127 255

Poids pour la représentation en complément à 2

-128 64 32 16 8 4 2 1

Entier en binaire

0 1 1 0 0 0 0 0 96 127 -128 256

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 176

Codification des booléens:Vrai : 1Faux : 0 un seul bit suffit.

Selon l'information que l'on souhaite manipuler, il est donc essentielde choisir son type (typedef), ce qui induit :

• le code de représentation binaire approprié pour conserver cette information en mémoire d'ordinateur,

• l'interprétation de ce code pour établir la correspondance entre notre langage et la représentation informatique,

• les opérations autorisées sur l'information.• on n'additionne pas des booléens,• on ne met pas un réel dans un entier,• …

Représentation de l’information

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 177

Les nouveaux multiples

1 kilo 2^{10}= 1 024 unités

1 méga 2^{20}= 1024 * 1024 = 1 048 576 unités

1 giga 2^{30}= 1024 * 1024 * 1024 = 1 073 741 824 unités

1 tera 2^{40}= 1024 * 1024 * 1024 * 1024 = 1 099 511 627 776 unités

1 peta 2^{50}= 1024 * etc… = 1 125 899 906 842 624 unités

1 exa 2^{60}= 1024* etc...= 1 152 921 504 606 846 976 unités

1 zetta 2^{70}= 1024* etc...= 1 180 591 620 717 411 303 424 unités

1 yotta 2^{80}= 1024* etc...= 1 208 925 819 614 629 174 706 176 unités

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS178

Types de données de base :

- int (entier)- float (réel)- double (réel) - char (caractère)- bool (booléen)

• Une information d'un de ces types peut valoir une des valeurs énumérées dans le type.

• Toute variable (une information utilisée dans une application) devra être définie par son type:

int ZAC ;bool permutation ;

Représentation de l’information

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 179

Toutes les données sont du même type (TQ)Tableau (vecteur)

TQ nom_tableau [dim]; /* dim est un entier *//* TQ est un type */

Tableau multidimensionnelTQ nom_tableau [dim1] [dim2] [dimN];

/*dim1, dim2, …, dimN sont des entiers, TQ est un type quelconque*/

Exemple :

int Tab [100];

Tab définit une zone de mémorisation de 100 composantes identifiées par leurs

indices variant de 0 à 99, pouvant accueillir des entiers.

Représentation de l’information

Types de données structurés

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

180

Le type n'a pas d'existence physique. C'est la définition d'un ensemble de propriétés (code de représentation, interprétation de ce code, opérations autorisées).

char Vec [7]; (baptisé par typedef char Vec [7] Vecteur)

int Mat [5] [7]; (baptisé par typedef int Mat [5] [7] Matrice)

0 1 2 3 4 5 6

0

1

2

3

4

0 1 2 3 4 5 6

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

181

Opération nouvelle : déclaration de variable

• Toute entité manipulée par un programme doit être mémorisée.• La déclaration réalise cela.• La place nécessaire à cette mémorisation est définie par le type associé

à cette entité.

int ZAC;bool permutation;Vecteur semaine;Matrice fevrier2016, mars2016;

Représentation de l’information

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

182

Opération nouvelle : définition du type "structure"

typedef TQ Tab [dim] T ;Dans un tableau, toutes les composantes doivent être du même type TQ et sont identifiées par leurs indices prenant leurs valeurs de 0 à (dim – 1).

Généralisons en autorisant des types différents:typedef struct TS { TQ1 comp1 ;

TQ2 comp2 ;

...

TQN compN;

} T ;Dans une structure, les composantes peuvent être de types différents (TQ1, TQ2, …, TQN) et sont identifiées par leurs noms explicites (comp1, …, compN)

Représentation de l’information

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

183

semaine

L M M J V S D

fevrier2016

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29

M M J V S D L

mars2016

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30 31

Calendrier

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

184

typedef struct Cal {Vecteur jour ;Matrice date ;int mois ;

} Calendrier ;

Représentation de l’information

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

185

Calendrier mars, avril;

mars

M M J V S D L 1 2 3 4 5 6 7 3

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30 31

avril

V S D L M M J 1 2 3 4 5 6 7 4

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30

Représentation de l’information

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 186

Opération nouvelle : définition du type "suite"

Un fichier est un ensemble structuré d'informations stockées sur un support externe (disque dur, disque USB, CD-ROM, DVD, carte mémoire, etc.).

C'est une suite d'informations qui ne sont pas forcément du même type (char,int, struct, ...)

Dans les fichiers séquentiels, les enregistrements sont mémorisésconsécutivement dans l'ordre de leur entrée et peuvent seulement être lusdans cet ordre.

Si on a besoin d'un enregistrement précis dans un fichier séquentiel, il fautlire tous les enregistrements qui le précèdent en se déplaçant à partir dupremier.

Représentation de l’information : fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 187

Il existe deux types de fichiers :

Les fichiers textes : sont les fichiers dont le contenu représente uniquementune suite de caractères imprimables, d'espaces et de retours à la ligne(.txt,...). Ils peuvent être lus directement par un éditeur de texte.

Les fichiers binaires : sont les fichiers qui ne sont pas assimilables à desfichiers textes (.exe, .mp3, .png, ...). Ils ne peuvent pas être lus directementpar un éditeur de texte.

Représentation de l’information : fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 188

Représentation de l’information : fichiers

• L'accès à un fichier d'un support de stockage de masse (disque dur,disque optique,...) est coûteux : temps des transferts, mécaniquedétériorable,...

• Donc, il faut réduire le nombre d'accès ⇒ Utilisation d'une zonemémoire appelée :

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 189

• L'accès à un fichier d'un support de stockage de masse (disque dur,disque optique,...) est coûteux : temps des transferts, mécaniquedétériorable,...

• Donc, il faut réduire le nombre d'accès ⇒ Utilisation d'une zonemémoire appelée : zone tampon (buffer)

Représentation de l’information : fichiers

• Ainsi, une instruction d'écriture (resp. lecture) dans le programme nese traduira pas immédiatement par une écriture (resp. lecture) sur ledisque mais par une écriture (resp. lecture) dans le buffer,

• avec écriture (resp. lecture) sur disque quand le buffer est plein (resp.vide).

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 190

Fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 191

Fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 192

Fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 193

Fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

194

Opérateurs :

Rewrite (sauve) définit sauve comme étant la suite vide, donc la suite de longueur 0. (On souhaite écrire dans le fichier à partir du début. On réécrira donc sur les données existantes si le fichier n'est pas vide)

Write (sauve, x) ajoute un élément de valeur x à la suite sauve. ( x est du type T0 et on écrit sa valeur dans le fichier)

Reset (sauve) positionne au début de la suite. (On souhaite lire le fichier à partir du début)

Read (sauve, x) affecte l'élément courant de la suite à la variable x et avance la position suivante de la suite. (x est du type T0 et on lit sa valeur dans le fichier)

Représentation de l’information : fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

195

En fait, sauve est une variable dont la zone de stockage est en mémoire alors que l'on souhaite enregistrer ou lire sur un fichier c'est-à-dire une zone sur le disque dur.

Il convient de mettre en correspondance ces deux zones, d'assigner la variable logique du programme au fichier physique du disque dur:

Assign (variable logique, fichier physique);

Assign (sauve, "donnees.dat");

Représentation de l’information : fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

196

La zone de stockage en mémoire, appelée tampon ou buffer, doit être initialisée pour pouvoir accéder au fichier. C'est accompli avec une opération Open de la variable.

Open (sauve); (Reset ou Rewrite)

Chaque fois que le tampon est plein, un transfert automatique est réalisé vers le fichier.

Si en fin d'écriture, la tampon n'est pas plein, le transfert automatique n'est pas réalisé. Il faut l'imposer avec une opération Close de la variable.

Close (sauve);

Représentation de l’information : fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 197

• La classe ofstream permet d'écrire des données sur les fichiers,

• La classe ifstream permet de lire des données dans un fichier.

• Il est toujours important d'utiliser la fonction close() des objetsofstream ou ifstream qui sont créés, notamment pour libérer lesressources systèmes liées à ces objets et en particulier pour vider lamémoire tampon associée au flux sur le fichier.

Représentation de l’information : fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

198

ofstream sauve ("donnees.dat"); /* pour écrire*/

(≡ Assign)

sauve.open (); (≡ Rewrite)sauve << x; /*cout est toujours ouvert pour l'écran*/

(≡ Write)sauve.close (); (≡ Close)

ifstream sauve ("donnees.dat"); /* pour lire*/

(≡ Assign)

sauve.open (); (≡ Reset)sauve >> x; /*cin est toujours ouvert pour le clavier*/

(≡ Read)sauve.close (); (≡ Close)

Représentation de l’information : fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 199

• Modes d'ouverture

Pour pouvoir écrire à la fin d'un fichier, il faut le spécifier lors del'ouverture en ajoutant un deuxième paramètre à la création du flux :

ofstream monFlux (nomFichier.c_str(), ios::app);

app est un raccourci pour append, le verbe anglais qui signifie « ajouter à la fin »

Fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

200

Caractère par caractère, en utilisant get().

Lire ligne par ligne : récupérer une ligne entière et la stocker dans une chaîne de caractères.

Trois manières différentes de lire un fichier :

Lire mot par mot : >>

Fichiers

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 201

Recherche linéaire :

i = 0 ;

Tant que ( (i < N) ET ( a [i] ≠ x ) )

{ i = i + l ; };

Recherche d’un élément dans un vecteur

Attention à l'ordre de l'expression booléenne !

Recherche linéaire :

i = 0 ;

Tant que (( a [i] ≠ x ) ET (i < N) )

{ i = i + l ; };

Possible débordement de i (i peut être égale à N)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 202

Recherche linéaire :

i = 0 ;

Tant que ( (i < N) ET ( a [i] ≠ x ) )

{ i = i + l ; };

• Remarque : avec la boucle « Pour … faire », on fait moins de tests, mais on va jusqu'au bout du tableau

• Complexité maximale: O (N)

• Complexité moyenne: O (N/2)

Recherche d’un élément dans un vecteur

Attention à l'ordre de l'expression booléenne !

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 203

Recherche dichotomique

(dans le cas où les éléments du tableau sont ordonnés)

Recherche dichotomique

• On prend un élément du vecteur au hasard et on le compare aunombre cherché.

1. S'il est plus petit, le nombre cherché est dans la partie gauche;

2. S'il est plus grand, il est dans la partie droite.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 204

G = 0 ;

D = N-1 ;

trouve = FALSE ;

Tant que ( (G < D) ET ( NON trouve) )

début

m = toute valeur entre G et D ;

if ( a [m] = = x )

{ trouve = TRUE; }

else {

if ( a [m] < x )

{G = m + 1; }

else { D = m; };

}

fin

Recherche dichotomiqueRecherche de x ?

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 205

• Eliminer, à coup sûr, le maximum d'éléments à chaque étape

• Choisir l'élément au milieu du tableau restant à considérer

• Amélioration? On teste si a[m] == x ? à chaque étape alors que la condition n’est vérifiée au maximum qu'une fois

Choix de m ?

Recherche dichotomique

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 206

G = 0 ;

D = N-1 ;

trouve = FALSE ;

Tant que (G < D)

début

m = (G + D) div 2 ;

if ( a [m] < x )

{ G = m + 1; }

else { D = m; };

fin

if ( a [D] = = x )

{ trouve = TRUE; }

Recherche dichotomique

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 207

G devient-il égal à D ?

Oui car à chaque étape

• G croît pour être égal à m + 1 c'est-à-dire (le milieu de l'intervalle entre G et D) + 1 ou

• D décroît pour être égal à m c'est-à-dire le milieu de l'intervalle entre G et D (par division entière)

• L'algorithme se termine-t-il ?

Complexité: O (log2N) (<< N lorsque N est grand)

Recherche dichotomique

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 208

21

G D

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

3 6 9 11 15 21 24 28 30 34 39 41 43 53 58

7

G D

0 1 2 3 4 5 6 7

3 6 9 11 15 21 24 28

3

G D

4 5 6 7

15 21 24 28

5

G D

4 5

15 21

4

GD

5

21

Recherche dichotomique

Valeur recherchée : 21

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 209

21

G D

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

3 6 9 11 15 21 24 28 30 34 39 41 43 53 58

7

G D

0 1 2 3 4 5 6 7

3 6 9 11 15 21 24 28

3

G D

3 4 5 6 7

11 15 21 24 28

5

G D

3 4 5

11 15 21

4

G D

4 5

15 21

4

G D

4 5

15 21

Si G = mRecherche dichotomique

G ne se déplacera pas vers D

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 210

Si D = m -1

21

G D

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

3 6 9 11 15 21 24 28 30 34 39 41 43 53 58

7

G D

0 1 2 3 4 5 6

3 6 9 11 15 21 24

3

G D

4 5 6

15 21 24

5

GD

4

15

Recherche dichotomique

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 211

N log2N N log2N N² Temps (µsec)

1 0,00 0,00 1 1 1 1 1

10 3,32 33,22 100 10 3,32 33,22 100

100 6,64 664,39 10000 100 6,64 664,39 10000

1000 9,97 9965,78 1000000 1000 9,97 9965,78 1 "

10000 13,29 132877,12 100000000 10000 13,29 132877,12 1 ' 40 "

100000 16,61 1660964,05 1,0E+10 100000 16,61 1,661 " 2 h 46 ' 40 "

1000000 19,93 19931568,57 1,0E+12 1 " 19,93 19,932 " 11 j 13 h 46 ' 40 "

50172

Recherche dichotomique

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

212

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

213

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

214

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

215

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

216

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

217

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

218

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

219

Somme des angles d'un polygone régulier à N côtés :

180° ( N – 2)

D'où un angle et sa moitié

D'où sinus et cosinus de cet angle

D'où aire d'un petit triangle

D'où aire totale

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

220

Nb côtés S. angles Angle 1/2 angle Aire 1/2 tri. Aire Précision

3 180 60,000 30,000 0,217 1,29904 58,650333%

4 360 90,000 45,000 0,250 2,00000 36,338023%

5 540 108,000 54,000 0,238 2,37764 24,317327%

6 720 120,000 60,000 0,217 2,59808 17,300666%

7 900 128,571 64,286 0,195 2,73641 12,897358%

9 1260 140,000 70,000 0,161 2,89254 7,927457%

12 1800 150,000 75,000 0,125 3,00000 4,507034%

24 3960 165,000 82,500 0,065 3,10583 1,138407%

30 5040 168,000 84,000 0,052 3,11868 0,729480%

36 6120 170,000 85,000 0,043 3,12567 0,506923%

60 10440 174,000 87,000 0,026 3,13585 0,182670%

1000 179640 179,640 89,820 0,002 3,1415720 0,000658%

10000 1799640 179,964 89,982 0,000 3,1415924 0,000007%

100000 17999640 179,996 89,998 0,000 3,1415926515 0,000000%

1000000 179999640 180,000 90,000 0,000 3,141592653618 0,000000%

PI 3,141592653590

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

221

Somme des angles d'un polygone régulier à N côtés :

180° ( N – 2)

D'où un angle et sa moitié

D'où cosinus de cet angle

D'où côté d'un petit triangle

D'où circonférence totale

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

222

Nb côtés S. angles Angle 1/2 angle Côté Circonférence Précision

3 180 60,000 30,000 1,732 5,19615 17,300666%

4 360 90,000 45,000 1,414 5,65685 9,968368%

5 540 108,000 54,000 1,176 5,87785 6,451072%

6 720 120,000 60,000 1,000 6,00000 4,507034%

7 900 128,571 64,286 0,868 6,07437 3,323361%

9 1260 140,000 70,000 0,684 6,15636 2,018446%

12 1800 150,000 75,000 0,518 6,21166 1,138407%

24 3960 165,000 82,500 0,261 6,26526 0,285334%

30 5040 168,000 84,000 0,209 6,27171 0,182670%

36 6120 170,000 85,000 0,174 6,27521 0,126876%

60 10440 174,000 87,000 0,105 6,28031 0,045686%

1000 179640 179,640 89,820 0,006 6,28317 0,000164%

10000 1799640 179,964 89,982 0,001 6,28318520 0,000002%

100000 17999640 179,996 89,998 0,000 6,28318530618 0,000000%

1000000 179999640 180,000 90,000 0,000 6,28318530727 0,000000%

Circonférence 6,28318530718

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

223

Nb côtés Circonférence Précision Aire Précision

3 5,19615 17,300666% 1,29904 58,650333%

4 5,65685 9,968368% 2,00000 36,338023%

5 5,87785 6,451072% 2,37764 24,317327%

6 6,00000 4,507034% 2,59808 17,300666%

7 6,07437 3,323361% 2,73641 12,897358%

9 6,15636 2,018446% 2,89254 7,927457%

12 6,21166 1,138407% 3,00000 4,507034%

24 6,26526 0,285334% 3,10583 1,138407%

30 6,27171 0,182670% 3,11868 0,729480%

36 6,27521 0,126876% 3,12567 0,506923%

60 6,28031 0,045686% 3,13585 0,182670%

1000 6,28317 0,000164% 3,1415720 0,000658%

10000 6,28318520 0,000002% 3,1415924 0,000007%

100000 6,28318530618 0,000000% 3,1415926515 0,000000%

1000000 6,28318530727 0,000000% 3,14159265362 0,000000%

6,28318530718 3,14159265359

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 224

PI = 3.141592653589793238512808959406186204433

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 225

Tri fusion

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 226

Tri fusion

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 227

Tri fusion

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

228

STRUCTURES DE DONNÉES DYNAMIQUES

1. Structures de données

• Allocation statique • Allocation dynamique• Arbres binaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 229

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 230

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 231

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 232

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 233

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 234

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 235

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 236

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

237

Types de mémoire

• les plus rapides : les registres qui forment des mémoires de quelques octets au plus en relation directe avec le processeur

• très rapides : les mémoires cache ou antémémoires du processeur(temps d'accès voisins de la nanoseconde)

• rapide : la mémoire centrale (temps d'accès décuplés)

• lentes : les disques magnétiques (temps d'accès voisins de la milliseconde) appelés aussi disques durs

• très lentes : les mémoires d'archivage (CD, bandes magnétiques) combinant stockage au moindre coût et sauvegarde permettant la remise d'un fichier dans son état antérieur (back-up).

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

238

STRUCTURES DE DONNÉES DYNAMIQUES

Allocation de mémoire

• La mémoire dans un ordinateur est une succession d’octets (soit 8 bits), organisés les uns à la suite des autres et directement accessibles par une adresse.

• Les entités utilisées (variables, constantes, (sous-)programmes) par le programme source sont représentées en mémoire (RAM de l'ordinateur)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

239

Allocation de mémoire

• La mémoire principale se divise en deux parties :

1. L’une est associée au système d’exploitation, toujours résidente en mémoire

2. L’autre destinée aux processus en cours d’exécution

STRUCTURES DE DONNÉES DYNAMIQUES

Un processus, est un programme en cours d’exécution par un ordinateur.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

240

Plusieurs emplacements dans la mémoire vive (segments)

• statique ou text : emplacement pour les programmes, sous-programmes

• Bss, data : emplacement pour les variables globales et les constantes

• tas ou heap : emplacement ou sont stockés des espaces mémoires alloués dynamiquement. La taille du tas varie en fonction de l'exécution du programme

• pile ou stack : emplacement ou sont stockées les variables locales et lesparamètres formels (paramètres d’appel ) des fonctions. La taille de la pile varie en fonction de l‘exécution du programme

STRUCTURES DE DONNÉES DYNAMIQUES

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

241

STRUCTURES DE DONNÉES DYNAMIQUES

• La pile (stack) est un espace mémoire réservé au stockage des variables désallouées automatiquement.

• La mémoire allouée dans le tas doit être désallouée explicitement.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

242

Allocation statique

• Allocation de mémoire effectuée lors de l'exécution mais prévue lors de la compilation

• À chaque type de données correspond une taille mémoire et une façon de représenter l'information

• À chaque variable ou paramètre formel déclarés correspond un espace mémoire dont la taille est fonction du type

• Le compilateur ajoute donc automatiquement du code pour réserver de l'espace mémoire avant utilisation (au niveau de la déclaration) et pour libérer si besoin est (dans la pile)

STRUCTURES DE DONNÉES DYNAMIQUES

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

243

Allocation dynamique

• Allocation de mémoire effectuée lors de l'exécution mais non prévue lors de la compilation

• Allocation qui se fait uniquement dans le tas

• Cette allocation est à la charge du programmeur,• Il lui faut donc :

• une procédure permettant de réserver une zone mémoire (allouer())

• une procédure permettant de libérer une zone mémoire (liberer())

• une variable (et donc un type) permettant de référencer cette zone mémoire allouée

STRUCTURES DE DONNÉES DYNAMIQUES

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

244

• Les structures de données de base sont statiques.

• Des structures de données dynamiques sont indispensables pour de nombreuses applications (lorsque l'on ne connaît pas à l'avance le nombre d'éléments dans la structure).

• Utilisons une structure récursive dont la définition du type utilise le type que l'on est en train de définir.

STRUCTURES DE DONNÉES DYNAMIQUES

typedef int Tableau [100]; // création d’un nouveau type Tableau;Tableau MyTab; MyTab[0] = 5;

100 doit être spécifié au début du programme d’où la dimension statique !

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

245

type T = pointer to T0

T0 * T, exemple : int * T;

• Les valeurs du type T sont des pointeurs vers des données du type T0.

• En effet, les valeurs de type T sont des adresses mémoire où l'on peut trouver T0.

• Comme les valeurs sont variables, pour une même variable de ce type, on peut accéder à plusieurs endroits mémoire différents en cours d'exécution.

• On prend possession de l'adresse mémoire de type T0 souhaitée par le mécanisme d'allocation dynamique (new).

STRUCTURES DE DONNÉES DYNAMIQUES

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

246

STRUCTURES DE DONNÉES DYNAMIQUES

• On introduit la procédure new.

• Etant donnée une variable pointeur p de type T,l'instruction new (p) alloue effectivement une variable detype de données T0 et affecte le pointeur désignant cettevariable à p.

• On peut faire référence à la valeur pointeur elle-même parp (c'est-à-dire comme valeur de la variable pointeur p).Par contre, la variable à laquelle p fait référence estdésignée par (*p).

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

247

STRUCTURES DE DONNÉES DYNAMIQUES

typedef struct Record Noeud;

struct Record{int cle;struct Record *suivant;...};

• (* définitions des types *)

typedef struct Record *Ptr;Ou typedef Noeud *Ptr;

• (* déclarations des variables *)

Ptr p, q;

• (* instructions *)

p = new Noeud;oup = new struct Record;

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

248

p est du type pointer vers T ( T*)

*p est du type T

STRUCTURES DE DONNÉES DYNAMIQUES

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

249

STRUCTURES DE DONNÉES DYNAMIQUES

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

250

Listes linéaires

p = new struct Record;

struct Record{int cle;struct Record *suivant;

};

typedef struct Record Noeud;

typedef Noeud *Ptr;

Ptr p, q;

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

251

p

q

p = new Record;q ->suivant = p ; p = q ;

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

252

Création d'une liste de n éléments

p = new Record;p = NULL ; {liste vide au début}

while (n > 0) {

q = new Record;

q->suivant = p ;

p = q ;

q->cle = n ;

n = n-1 ;

}

p

q

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

253

Listes linéaires

NULL

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

254

Exemple en C++

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

255

• Insertion dans une liste après p

q->suivant = p->suivant ;

p->suivant = q ;

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

256

Recherche d'un élément dans une liste

while ((p != NULL) & (p->cle != x)) p = p->suivant ;

Attention : l'ordre des conditions est essentiel !

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

257

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

258

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

259

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

260

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

261

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

262

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

263

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

264

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

265

Listes linéairesmain ()

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

266

( Implémentation d'une liste par tableau )

Procédure INSERER complexité: O (N)

Procédure SUPPRIMERcomplexité: O (N)

Listes linéaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

267

• Une pile (stack en anglais) est une liste dans laquelle l'insertion ou la suppression d'un élément s'effectue toujours à partir de la même extrémité de la liste, extrémité appelée le sommet de la pile.

• L'action consistant à ajouter un nouvel élément au sommet de la pile s'appelle empiler; celle consistant à retirer l'élément situé au sommet de la pile s'appelle dépiler.

• Une pile permet de modéliser un système régi par la discipline "dernier arrivé - premier sorti"; on dit souvent qu'il s'agit d'un traitement LIFO (last in, first out).

• La hauteur de la pile est son nombre d'éléments.

Piles

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

268

Opérations sur les piles

EMPILER (x, p)

DEPILER (p)

SOMMET (p)

VIDE (p)

RAZ (p)

Piles

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

269

Implémentation par tableau (p est un tableau, sommet est un entier)

PILEVIDE (p) sommet := LongMax + 1;SOMMET (p) p[sommet];EMPILER (x, p) sommet := sommet - 1; p[sommet] := x;DEPILER (p) sommet := sommet + 1;EST-PILEVIDE (p) sommet = LongMax + 1 ?

Piles

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

270

Implémentation par une liste chaînée

PILEVIDE (p: pile); crée une pile vide p.SOMMET (p: pile); renvoie l'élément au sommet

de la pile p (non vide).Idem premier d'une liste

EMPILER (x: element, p: pile); insère x au sommet de la pile p.Idem insérer (entête) d'une liste

DEPILER (p: pile); supprime l'élément au sommet de la pile p ( (non vide).Idem supprimer (entête) d'une liste

EST-PILEVIDE (p: pile): booléen; teste si la pile p est vide.

Piles

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

271

• Une file est une liste dans laquelle toutes les insertions de nouveaux éléments s'effectuent d'un même côté de la liste appelé fin et toutes les suppressions d'éléments s'effectuent toujours à partir de l'autre extrémité, appelée début.

• L'action consistant à ajouter un nouvel élément à la fin de la file s'appelle enfiler; celle consistant à retirer l'élément situé au début de la file s'appelle défiler.

• Une file permet de modéliser un système régi par la discipline "premier arrivé - premier sorti" (FIFO : first in, first out).

Files

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

272

Opérations sur une file

FILEVIDE (f: file); crée une file vide f.

TETE (f: file); renvoie l'élément en tête de la file f (non vide).

EMFILER (x: element, f: file); insère x à la fin de la file f.

DEFILER (f: file); supprime l'élément en tête de la file f (non vide).

EST-FILEVIDE (f: file): booléen; teste si la file f est vide.

Files

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

273

Implémentation par un tableau

• Si la file est représentée par un tableau f, on doit gérer deux indices tête et queue indiquant les cases de f entre lesquelles se trouvent toutes les données;

• la donnée devant sortir en premier figure dans la case d‘indice tête, tandis que la première case libre, c'est-à-dire la case dans laquelle on placera la prochaine donnée enfilée, est d‘indice queue + 1.

• Possibilité de gestion cyclique pour éviter le débordement (dans ce cas, queue devient plus petit que tête).

Files

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

274

Implémentation par une liste chaînée

Files

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

275

Une file circulaire est repérée par un pointeur sur sa dernière place (si la file est vide, le pointeur vaut null). La tête de la file est donc l’élément suivant, et peut être facilement supprimée; de même, l’insertion en fin de file se fait facilement.

Files

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

276

ARBRES

• Un arbre est une structure composée d'éléments appelés nœuds;

• Il est constitué d'un nœud particulier appelé racine et d'une suite ordonnée éventuellement vide A1, A2, …, Ap d'arbres appelés sous-arbres de la racine.

• Un arbre contient donc au moins un nœud : sa racine.

• Définition récursive !

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

277

Parcours d'arbre (procédures récursives)

Parcours préfixe de NLister NParcours préfixe des fils de N (de gauche à droite)

Parcours infixe de NParcours infixe du fils gauche de NLister NParcours infixe des autres fils de N

Parcours postfixe de NParcours postfixe des fils de N (de gauche à droite)Lister N

ARBRES

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

278

Parcours préfixe* + a b + a c (notation polonaise)

Parcours infixea + b * a + c (notation standard)

Parcours postfixea b + a c + * (notation polonaise inverse)

Parcours d’un arbre

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

279

Arbres binaires

• Un arbre binaire est soit vide, soit constitué d'un nœud particulier appelé racine et de deux sous-arbres binaires disjoints appelés sous-arbre gauche et sous-arbre droit.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

280

• Un arbre binaire est dit complet si tout nœud interne a exactement deux fils.

• Un arbre binaire est dit parfait si, en appelant h la hauteur de l'arbre, les niveaux de profondeur 0, 1, …, h - 1 sont complètement remplis alors que le niveau de profondeur h est rempli en partant de la gauche; la structure d'un arbre binaire parfait est complètement déterminée par son nombre de nœuds.

Arbres binaires

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

281

• Un arbre binaire est dit équilibré si, pour tout nœud de l'arbre, les sous-arbres gauche et droit ont des hauteurs qui diffèrent au plus de 1.

• Un arbre binaire parfait est équilibré. On peut démontrer que la hauteur h d'un arbre binaire équilibré ayant n nœuds vérifie : log2(n + 1) ≤ h ≤ 1,44 log2(n + 2).

• On notera donc que la profondeur moyenne des nœuds d'un arbre binaire équilibré est en O (log2n).

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

282

Arbres tournois

• Un tas est un arbre tournoi parfait.

• Un arbre tournoi est un arbre binaire dont les sommets sont munis d’une clé, et tel que pour tout sommet autre que la racine, la clé du sommet est plus grande (petite) que celle de son père. En d’autres termes, les clés sur un chemin (dé)croissent de la racine vers une feuille.

Arbre tournoi Tas

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

283

Implémentation d'un arbre général par tableau

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

284

Implémentation d'un arbre général par pointeurs

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

285

Implémentation d'un tas par tableau

Tableau a avec n = 9

1 3 2 6 9 5 4 8 7

Indices du tableau

1 2 3 4 5 6 7 8 9

EST-ARBREVIDE n = 0 ? ARBREVIDE n = 0RACINE 1 DERNIERE-FEUILLE nPERE (p) p div 2FILS-GAUCHE (p) 2p FILS-DROIT (p) 2p + 1EST-FEUILLE p > n div 2CREER-FEUILLE (x, a) n = n + 1; a[n] = xSUPPRIMER-FEUILLE n = n – 1CONTENU (p) a[p]

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

286

Insertion dans un tas

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

287

Rangement du plus grand

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

Complexité

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

Ajout d’un nœud dans un tas

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

Construction d’un tas

Illustration de ConstruireTas(scan [Cormen et al., 1994])

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

Tri tas

Illustration de TrisTas

(scan [Cormen et al.,

1994])

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

292

TRI TAS

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

293

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

294

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

295

Complexité: O (n log2 n) !

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS 296

Fin de la matière à prendre en compte pour l’examen

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

297

Un ordinateur actuel comporte trois composants essentiels:

l'unité centrale de traitement (UCT), qui fait les opérations de base;

la mémoire qui contient :• l'algorithme spécifiant les opérations à exécuter;• l'information, ou les données, à partir desquelles les

opérations agissent;

les dispositifs d'entrée et de sortie (dispositifs E/S) grâce auxquelsl'algorithme et les données entrent en mémoire et l'ordinateurcommunique les résultats.

Architecture de l'ordinateur

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

298

Collecteur

Emetteur

Collecteur Base Emetteur

Silicium

n

np

Isolant en bioxyde de

silicium

Conducteur en aluminium

Base

Transistor

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

299

Porte AND

Entrées

Sortie

Portes OR et NOT de manière similaire.

Toutes les opérations logiques sont donc réalisables.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

300

Additionneur

0+0=0, retenue 00+1=1, retenue 01+0=1, retenue 01+1=0, retenue 1

La retenue n'est nécessaire que lorsque les deux chiffres sont 1. La porte AND réalise cela.

La somme de deux chiffres est égale à 1 si et seulement si un chiffre est 1 et l'autre 0. C'est obtenu par (premier chiffre AND NOT second chiffre) OR (second chiffre AND NOT premier chiffre).

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

301

• En combinant des additionneurs, on réalise la somme des nombres binaires.

• On peut alors effectuer les opérations de soustraction, de multiplication et de division de manière similaire.

• A l'aide de transistors, combinés en portes, assemblées en composants, il est donc possible de réaliser toutes les opérations logiques et arithmétiques sur les nombres binaires.

Additionneur

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

302

Mémoires

Un transistor laisse passer un courant ou non.

Une bascule est un ensemble de transistors qui conserve un courant ou non tant qu'on ne change pas son état.C'est donc un composant qui conserve (mémorise) une information élémentaire (un bit) tant qu'une tension électrique alimente l'équipement.

Un ensemble (par exemple 64) de bascules constitue une cellule mémoire qui permet de mémoriser un mot d'information tant que l'ordinateur est sous tension. Chaque cellule mémoire est repérée et répertoriée par un numéro, son adresse.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

303

Bus des données

• Il permet de transmettre les informations dans les deux sens entre la mémoire et l'additionneur.

• Un bus de données est à la base un assemblage de fils qui connectent les différents composants entre eux. Le nombre de fils correspond généralement à la taille du mot du processeur.

• Puisqu'un bus de données ne peut transférer qu'un mot de données à la fois, il faut nécessairement déterminer quels sont les composants autorisés à utiliser les bus à tout moment. Cela peut être effectué en connectant chaque composant au bus par l'intermédiaire d'une porte ET dont l'autre entrée est un signal de contrôle qui ne libère le mot de données que si le bus est libre.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

304

L'horloge et l'unité de commande

• Les signaux de contrôle émanent du composant "unité de commande" qui a pour fonction de réaliser le transfert de composant à composant des données qui conviennent au moment voulu, et de s'assurer que les opérations correctes sur les données sont effectuées. (accès au bus, changement de l'état d'une bascule, …)

• L'horloge, élément de l'unité de commande, produit des signaux à intervalles réguliers. Ces signaux sont utilisés par l'unité de commande pour s'assurer que tous les composants de l'ordinateur fonctionnent en synchronisation les uns avec les autres, et que chaque composant dispose d'un temps suffisant pour mener son opération à terme.

• La fréquence de l'horloge est donc une bonne mesure de la rapidité de calcul d'un processeur.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

305

Système d’exploitation

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

306

Exécution des algorithmes par un ordinateur

• Pas de méthode simple pour entrer un programme dans la mémoire de l'ordinateur.

• Entrées/sorties (E/S) difficiles à utiliser car fonctions des périphériques.

• Pas de méthode simple pour qu'un programme ou ses données dépasse la capacité de la mémoire.

• Une tâche seule occupe généralement très peu le processeur.

• L'ordinateur est programmé en langage machine, inapproprié pour les tâches de programmation.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

307

Logiciels de base ou programmes système

Le système d’exploitation qui a trois fonctions :• gère les caractéristiques matérielles des composants de l’ordinateur,

• aide à la manipulation des programmes et des données,

• permet le partage de l'ordinateur entre plusieurs utilisateurs, de manière simultanée.

Les traducteurs de langage traduisent des programmes écrits en langages évolués (Pascal, C, C++, ...) dans le langage machine de l'ordinateur concerné.

Les éditeurs permettent de modifier des programmes, des fichiers de données, ...

Les chargeurs s’occupent de l’installation des programmes dans la mémoire centrale.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

308

Traducteurs de langages

Traduit en langage machine des programmes écrits en langage évolué. Le résultat est traité par un interpréteur microprogrammé qui génère les signaux de commande pour l'exécution.

Deux sortes d'entités à traduire:

▪ Les instructions en langage évolué qui en nécessiteront beaucoup en langage machine.

▪ Les structures de données qui doivent être représentées sous forme de bits, de nombres et d'adresses.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

309

Interpréteur

Fonctionnement

• lire une instruction du programme évolué;• l'exécuter;• passer à l'instruction suivante; etc.

Avantages • la traduction n’est pas conservée en mémoire• la détection d’erreur est facilitée

Désavantages• traductions multiples• lenteur d’exécution du programme

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

310

Compilateur

Fonctionnementlire et traduire tout le programme évoluéle mémoriserl'exécuter

Avantages• La traduction est enregistrée (programme objet)• rapidité d’exécution du programme

Désavantages• besoin de mémoire pour la mémorisation• détection d’erreurs plus difficile

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

311

Système d’exploitation

Le système d exploitation a trois fonctions :

1. gère les caractéristiques matérielles des composants de l’ordinateur grâce à des programmes dédicacés,

2. aide à la manipulation des programmes et des données par des programmes de commande,

3. permet le partage de l'ordinateur entre plusieurs utilisateurs, de manière simultanée, grâce à la multiprogrammation.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

312

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

313

• Pour la multiprogrammation, il faut

• La distribution qui fait passer le processeur d’une tâche à l'autre

• La gestion des interruptions pour interrompre une tâche en cours

• L’affectation des ressources aux tâches selon les besoins

• La protection des ressources contre les accès non autorisés

• La planification des tâches selon les priorités

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

314

Distributeur

Les tâches (processus) sont dans l’un des trois états suivants:

• En cours d'exécution: le processus est exécuté par l’UCT.

• Prêt: le processus est exécutable et attend que l’UCT lui soit affectée.

• Bloqué: le processus attend quelque chose (un résultat, la fin d'un transfert E/S, ...)

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

315

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

316

• Pour partager le processeur entre tous les processus, on alloue un quantum de temps à chacun (50 ms) à tour de rôle et selon les priorités. Remarque: en 50 ms, un processus peut accomplir de très nombreuses instructions.

• Lorsque le quantum est écoulé, le processus en cours est stoppé, sauvegardé en mémoire et attend que ce soit de nouveau son tour.

• Ce système est appelé time sharing (temps partagé)

Distributeur

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

317

Le distributeur est normalement appelé dans les circonstances suivantes :

• un processus en cours d'exécution demande un transfert E/S ou une ressource; il devient bloqué;

• le quantum d'un processus en cours d'exécution expire, indiquant que l'UCT doit être affectée à un autre processus;

• l'exécution d'un processus se termine.

En réalité, à chacun de ces évènements, un signal d'interruption est envoyé au processeur qui met en œuvre le gestionnaire d'interruption. Celui-ci analyse l'interruption, fait ce qui doit être fait et appelle le distributeur.

Distributeur

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

318

Gestion de la mémoire

Trois aspects fondamentaux:

1. Affectation: pour qu'un processus soit exécuté il doit lui être affecté une mémoire suffisante pour stocker son programme et ses données.

2. Protection: il est important qu'aucun processus ne puisse avoir accès à une partie quelconque de mémoire qui ne lui soit pas affectée.

3. Utilisation: l'affecter au mieux avec des processus prêts à être exécutés.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

319

• Le système d'exploitation doit être libre d'affecter à un processus n'importe quelle partie de la mémoire actuellement disponible.

• Mais comment un compilateur peut-il générer des adresses exactes alors qu'il ignore quelle zone mémoire le programme objet occupera pendant l'exécution?

• Pour cela, distinguer adresses du programme générées par un traducteur de langage et adresses mémoire des cellules dans lesquelles le programme objet doit par la suite résider.

• Le traducteur de langage suppose que la totalité de la mémoire est disponible, et génère des adresses de programme partant de zéro: ces adresses doivent alors être transformées en adresses mémoire correspondantes pour la zone de mémoire affectée au programme objet par le système d'exploitation.

Gestion de la mémoire

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

320

Les registres de base et de limite

• Le registre de base contient l'adresse de la première cellule mémoire affectée au processus.

• Le registre de limite ou registre de longueur, fixée par le système d'exploitation et correspondant au nombre de cellules mémoire affectées au processus en cours d'exécution.

Gestion de la mémoire

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

321

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

322

La pagination

• Technique de gestion de la mémoire qui permet à un processus d'être exécuté quand seul un segment du programme et des données réside en mémoire centrale.

• Le programme et les données de chaque processus sont divisés en un certain nombre de pages de taille identique, et la mémoire est elle-même divisée en un nombre de structures de page d'égale grandeur.

• Chaque structure de page peut contenir une page d'un processus.

• Les structures de page sont affectées par le système d'exploitation, de sorte qu'à tout moment chaque processus ait quelques pages occupant les structures de page de la mémoire, pendant que le reste est conservé en mémoire auxiliaire.

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

323

L'UCT transforme une adresse programme en une adresse mémoire

• en calculant, à partir de l'adresse programme, quelle page et quelle cellule dans la page sont désignées; et

• en utilisant les informations gardées par le système d'exploitation pour déterminer quelle structure la page occupe actuellement.

La pagination

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

324

La pagination

Université de Mons FPMS-INFO | Faculté Polytechnique de Mons | UMONS

325

• La pagination donne l'illusion d'une mémoire virtuelle plus grande que la mémoire disponible.

• La protection de la mémoire contre des accès non autorisés est garantie par l'utilisation d'une table de pages séparée pour chaque processus.

• Le système d'exploitation doit choisir les pages à enlever pour placer les pages dont les processus ont besoin.

La pagination