algorithmes et structures de données 3ème cours patrick reuter preuter

69
Algorithmes et structures de données 3ème cours Patrick Reuter http://www.labri.fr/~preuter

Upload: blancheflour-chapelle

Post on 03-Apr-2015

115 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Algorithmes et structures de données

3ème cours

Patrick Reuter

http://www.labri.fr/~preuter

Page 2: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Ingrédients d’algorithmes

• Affectation

• Condition/Comparaison

• Appel de fonction

• Structure de contrôle– Branchements conditionnels (multiples)– Boucles

• Bloc d’instruction

Page 3: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Ajourd’hui

• Sondage

• Organisation de la mémoire

• Types de bases

Page 4: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

• o Compteur := 8 ;

• o Nom := "Patrick";

• o 7+3 := 10 ;

• o resultat := 20*5 ;

• o 20 := c ;

• o score := score + 10;

• o highscore := score;

Page 5: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

• o Compteur := 8 ;

• o Nom := "Patrick";

• o 7+3 := 10 ;

• o resultat := 20*5 ;

• o 20 := c ;

• o score := score + 10;

• o highscore := score;

Page 6: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

• o Compteur := 8 ;

• o Nom := "Patrick";

• o 7+3 := 10 ;

• o resultat := 20*5 ;

• o 20 := c ;

• o score := score + 10;

• o highscore := score;

BON : 16MOYEN : 0FAUX : 20

Page 7: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

BOUCLE

Page 8: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Ingrédients d’algorithmes

• Structure de contrôle– Boucle

TANT QUE <condition> FAIRE<bloc d’instructions>

FIN TANT QUE

ou

FAIRE<bloc d’instructions>

TANT QUE <condition>

Page 9: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

Bloc d’instruction à répéter :

writeln("J’adore les lundi");

i := i + 1;

Page 10: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Bloc d’instruction

Bloc d’instruction à répéter :

(toujours dans begin end s’il y a plusieurs)

begin

writeln("J’adore les lundi");

i := i + 1;

end

Page 11: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Boucle

Condition d’arrêt : i>5

while (i<=5) do

begin

writeln("J’adore les lundi");

i := i + 1;

end

Page 12: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Initialisation

var i : integer;

i := 1;

while (i<=5) do

begin

writeln("J’adore les lundi");

i := i + 1;

end

Page 13: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

var i : integer;

i := 1;

while (i<=5) do

begin

writeln("J’adore les lundi");

i := i + 1;

end

i

123456

Page 14: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

var i : integer;

i := 1;

while (i<=5) do

begin

writeln("J’adore les lundi");

i := i + 1;

end

i

123456

BON : 36MOYEN : 0FAUX : 11

Page 15: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Ingrédients d’algorithmes

• Structure de contrôle– Branchements conditionnels

SI <condition> ALORS<bloc d’instructions>

SINON<bloc d’instructions>

Page 16: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Ingrédients d’algorithmes

• Structure de contrôle– Branchements conditionnels

SI <condition> ALORS

<bloc d’instructions>

SINON

<bloc d’instructions>

Exemple:

SI (score>meilleur_score) ALORS

meilleur_score := score;

Page 17: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Ingrédients d’algorithmes

• Structure de contrôle– Branchements conditionnels

SI <condition> ALORS<bloc d’instructions>

SINON<bloc d’instructions>

Exemple:SI (score>meilleur_score) ALORS

meilleur_score := score;

En PASCAL :IF (score>meilleur_score) THEN

meilleur_score := score;

Page 18: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

function estNegatif(entree : integer) : boolean;

débutsi (entree < 0) alors

result := true;sinon

result := false;fin;

Page 19: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

function estNegatif(entree : integer) : boolean;

beginif (entree < 0) then

beginestNegatif := truewriteln(« valeure est négative »);

end;else

estNegatif := false;end;

Page 20: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

function estNegatif(entree : integer) : boolean;

beginif (entree < 0) then

mw.lines.add(true);else

mw.lines.add(false);end;

NON !! Ne pas afficher à l’écran !!

Page 21: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

function estNegatif(entree : integer) : boolean;

beginif (entree < 0) then

mw.lines.add(true);else

mw.lines.add(false);end;

NON !! Ne pas afficher à l’écran !!

Page 22: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

function estNegatif(entree : integer) : boolean;

beginif (entree < 0) then

result := true;else

result := false;end;

Page 23: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

function estNegatif(entree : integer) : boolean;

begin

if (entree < 0) then

result := true;

else

result := false;

end;

A := estNegatif(100);

C := estNegatif(-30);

Page 24: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

function estNegatif(entree : integer) : boolean;

begin

if (entree < 0) then

result := true;

else

result := false;

end;

A := estNegatif(100);

C := estNegatif(-30);

BON : 30MOYEN : 10FAUX : 5

Page 25: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

« FAIRE TOURNER » un algorithme

• Exemple: Tester si un nombre est premier

Page 26: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

« FAIRE TOURNER » un algorithme

• Exemple: Tester si un nombre est premier

Stratégie: Supposer que le nombre est premier jusqu’à on a trouvé un diviseur.

Page 27: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

« FAIRE TOURNER » un algorithme

• Exemple: Tester si un nombre est premier

Stratégie: Supposer que le nombre est premier jusqu’à on a trouvé un diviseur.

FONCTION estPremier(nombre) : boolean;estPremier := VRAI;Diviseur := 2;TANT QUE diviseur<nombre ET estPremier := VRAI

FAIRESI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;Diviseur := Diviseur + 1;

FIN TANT QUEFIN FONCTION

Page 28: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

« FAIRE TOURNER » un algorithme

• Exemple: Tester si un nombre est premier

Stratégie: Supposer que le nombre est premier jusqu’à on a trouvé un diviseur.

FONCTION estPremier(nombre) : boolean;Diviseur := 2;TANT QUE diviseur<nombre FAIRE

SI (nombre MOD diviseur = 0) ALORSestPremier := FAUX;

SINONestPremier := VRAI;

Diviseur := Diviseur + 1;FIN TANT QUE

FIN FONCTION

FAUX !!!!

Page 29: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

« FAIRE TOURNER » un algorithme

• Exemple: Tester si un nombre est premier

Stratégie: Supposer que le nombre est premier jusqu’à on a trouvé un diviseur.

FONCTION estPremier(nombre) : boolean;Diviseur := 2;TANT QUE diviseur<nombre ET estPremier := VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORSestPremier := FAUX;

SINONestPremier := VRAI;

Diviseur := Diviseur + 1;FIN TANT QUE

FIN FONCTION

Page 30: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

DiviseurestPremier

EXEMPLE: resultat = testSiPremier(9);

resultatNombre

Page 31: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier := VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

DiviseurestPremier

EXEMPLE: resultat := testSiPremier(9);

resultatNombre

9

Page 32: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier := VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

DiviseurestPremier

VRAI

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 33: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre % diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

2

estPremier

VRAI

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 34: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier := VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

2

estPremier

VRAI

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 35: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier := VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

2

estPremier

VRAI

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 36: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier := VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

estPremier

VRAI

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 37: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

estPremier

VRAI

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 38: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier := VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

estPremier

VRAI

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 39: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

estPremier

VRAI

FAUX

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 40: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

234

estPremier

VRAI

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 41: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

4

estPremier

VRAI

FAUX

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 42: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre) : boolean;

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

234

estPremier

VRAI

FAUX

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 43: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier := VRAI;

Diviseur := 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier := FAUX;

diviseur := diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

234

estPremier

VRAI

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 44: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier = VRAI;

Diviseur = 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier = FAUX;

diviseur = diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

234

FAUX

estPremier

VRAI

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 45: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier = VRAI;

Diviseur = 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier = FAUX;

diviseur = diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

234

FAUX

estPremier

VRAI

Nombre

9

EXEMPLE: resultat = testSiPremier(9);

resultat

Page 46: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

« FAIRE TOURNER » un algorithme

• Exemple: Tester si un nombre est premier

Stratégie: Supposer que le nombre est premier jusqu’à on a trouvé un diviseur.

FONCTION estPremier(nombre)estPremier ← VRAI;Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORSestPremier ← FAUX;FIN TANT QUE

FIN FONCTION

Page 47: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

DiviseurestPremier

EXEMPLE: resultat ← testSiPremier(9);

resultatNombre

Page 48: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

DiviseurestPremier

EXEMPLE: resultat ← testSiPremier(9);

resultatNombre

9

Page 49: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

DiviseurestPremier

VRAI

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 50: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

2

estPremier

VRAI

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 51: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

2

estPremier

VRAI

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 52: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

2

estPremier

VRAI

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 53: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

estPremier

VRAI

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 54: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

estPremier

VRAI

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 55: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

estPremier

VRAI

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 56: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

estPremier

VRAI

FAUX

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 57: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

4

estPremier

VRAI

FAUX

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 58: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

4

estPremier

VRAI

FAUX

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 59: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

4

estPremier

VRAI

FAUX

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 60: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

4

estPremier

VRAI

FAUX

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 61: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

FONCTION testSiPremier(nombre)

estPremier ← VRAI;

Diviseur ← 2;TANT QUE diviseur<nombre ET estPremier = VRAI FAIRE

SI (nombre MOD diviseur = 0) ALORS

estPremier ← FAUX;

diviseur ← diviseur + 1;FIN TANT QUE

RETOURNER estPremier;FIN FONCTION

Diviseur

23

4

FAUX5

estPremier

VRAI

FAUX

Nombre

9

EXEMPLE: resultat ← testSiPremier(9);

resultat

Page 62: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

Récursion

Page 63: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

• Exemple :  factoriel(5);

• factoriel := 5 * 4 * 3 * 2 * 1;

Page 64: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

function factoriel(n : integer) : integer;beginvar resultat : integer;

if ((n = 0) OR (n = 1) thenresultat := 1;

else resultat = n * factoriel(n-1);

result := resultat;end

Condition d’arrêt : la fonction n’est plus appelé par elle-même

Page 65: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

• Appel de fonction :  factoriel(5);

• factoriel := 5 * factoriel(5 - 1);

• factoriel := 5 * (4 * factoriel(4 - 1));

• factoriel := 5 * (4 * (3 * factoriel(3 - 1)));

• factoriel := 5 * (4 * (3 * (2 * factoriel(2 - 1))));

• factoriel := 5 * (4 * (3 * (2 * (1 ))));

Page 66: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

Complexité

Page 67: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

Jeux de cartes 54, sortir les jokers 1 minute

Jeux de cartes 108 joker, sortir les jokers 2 minutes

Comportement linéaire O(N)

Page 68: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

Trier 100 entrées 10 minutes

Trier 100 entrées 10 minutes

Puis les mettre ensemble quelques minutes

Trier 200 entrées

>> 20 minutes

Comportement quadratique O(N2)

Comportement quadratique O(N log N)

Page 69: Algorithmes et structures de données 3ème cours Patrick Reuter preuter

Sondage

Trier 100 entrées 10 minutes

Trier 100 entrées 10 minutes

Puis les mettre ensemble quelques minutes

Trier 200 entrées

>> 20 minutes

Comportement quadratique O(N2)

Comportement quadratique O(N log N)

BON : 7

FAUX : 38