Algorithmes et structures de donnes 3me cours Patrick

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

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

Ingrédients d’algorithmes • • Affectation Condition/Comparaison Appel de fonction Structure de contrôle – Branchements

Ingrédients d’algorithmes • • Affectation Condition/Comparaison Appel de fonction Structure de contrôle – Branchements conditionnels (multiples) – Boucles • Bloc d’instruction

Ajourd’hui • Sondage • Organisation de la mémoire • Types de bases

Ajourd’hui • Sondage • Organisation de la mémoire • Types de bases

Sondage • • o o o o Compteur : = 8 ; Nom :

Sondage • • o o o o Compteur : = 8 ; Nom : = "Patrick"; 7+3 : = 10 ; resultat : = 20*5 ; 20 : = c ; score : = score + 10; highscore : = score;

Sondage • • o o o o Compteur : = 8 ; Nom :

Sondage • • o o o o Compteur : = 8 ; Nom : = "Patrick"; 7+3 : = 10 ; resultat : = 20*5 ; 20 : = c ; score : = score + 10; highscore : = score;

Sondage • • o o o o Compteur : = 8 ; Nom :

Sondage • • o o o o Compteur : = 8 ; Nom : = "Patrick"; BON : 16 7+3 : = 10 ; resultat : = 20*5 ; MOYEN : 0 20 : = c ; FAUX : 20 score : = score + 10; highscore : = score;

Sondage BOUCLE

Sondage BOUCLE

Ingrédients d’algorithmes • Structure de contrôle – Boucle TANT QUE <condition> FAIRE <bloc d’instructions>

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>

Sondage Bloc d’instruction à répéter : writeln("J’adore les lundi"); i : = i +

Sondage Bloc d’instruction à répéter : writeln("J’adore les lundi"); i : = i + 1;

Bloc d’instruction à répéter : (toujours dans begin end s’il y a plusieurs) begin

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

Boucle Condition d’arrêt : i>5 while (i<=5) do begin writeln("J’adore les lundi"); i :

Boucle Condition d’arrêt : i>5 while (i<=5) do begin writeln("J’adore les lundi"); i : = i + 1; end

Initialisation var i : integer; i : = 1; while (i<=5) do begin writeln("J’adore

Initialisation var i : integer; i : = 1; while (i<=5) do begin writeln("J’adore les lundi"); i : = i + 1; end

Sondage var i : integer; i : = 1; while (i<=5) do begin writeln("J’adore

Sondage var i : integer; i : = 1; while (i<=5) do begin writeln("J’adore les lundi"); i : = i + 1; end i 1 2 3 4 5 6

Sondage var i : integer; i : = 1; while (i<=5) do begin writeln("J’adore

Sondage var i : integer; i : = 1; while (i<=5) do begin writeln("J’adore les lundi"); i : = i + 1; BON : 36 end MOYEN : 0 FAUX : 11 i 1 2 3 4 5 6

Ingrédients d’algorithmes • Structure de contrôle – Branchements conditionnels SI <condition> ALORS <bloc d’instructions>

Ingrédients d’algorithmes • Structure de contrôle – Branchements conditionnels SI <condition> ALORS <bloc d’instructions> SINON <bloc d’instructions>

Ingrédients d’algorithmes • Structure de contrôle – Branchements conditionnels SI <condition> ALORS <bloc d’instructions>

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;

Ingrédients d’algorithmes • Structure de contrôle – Branchements conditionnels SI <condition> ALORS <bloc d’instructions>

Ingrédients d’algorithmes • Structure de contrôle – Branchements conditionnels SI <condition> ALORS <bloc d’instructions> SINON <bloc d’instructions> En PASCAL : IF (score>meilleur_score) THEN meilleur_score : = score; Exemple: SI (score>meilleur_score) ALORS meilleur_score : = score;

function est. Negatif(entree : integer) : boolean; début si (entree < 0) alors result

function est. Negatif(entree : integer) : boolean; début si (entree < 0) alors result : = true; sinon result : = false; fin;

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then begin

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then begin est. Negatif : = true writeln( « valeure est négative » ); end; else est. Negatif : = false; end;

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then mw.

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then mw. lines. add(true); else mw. lines. add(false); end; NON !! Ne pas afficher à l’écran !!

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then mw.

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then mw. lines. add(true); else mw. lines. add(false); end; NON !! Ne pas afficher à l’écran !!

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then result

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then result : = true; else result : = false; end;

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then result

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then result : = true; else result : = false; end; … A : = est. Negatif(100); C : = est. Negatif(-30);

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then result

function est. Negatif(entree : integer) : boolean; begin if (entree < 0) then result : = true; else result : = false; end; … A : = est. Negatif(100); C : = est. Negatif(-30); BON : 30 MOYEN : 10 FAUX : 5

 « FAIRE TOURNER » un algorithme • Exemple: Tester si un nombre est

« FAIRE TOURNER » un algorithme • Exemple: Tester si un nombre est premier

 « FAIRE TOURNER » un algorithme • Exemple: Tester si un nombre est

« 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.

 « FAIRE TOURNER » un algorithme • Exemple: Tester si un nombre est

« 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 est. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier : = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; Diviseur : = Diviseur + 1; FIN TANT QUE FIN FONCTION

 « FAIRE TOURNER » un algorithme • Exemple: Tester si un nombre est

« 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 est. Premier(nombre) : boolean; Diviseur : = 2; TANT QUE diviseur<nombre FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; SINON est. Premier : = VRAI; Diviseur : = Diviseur + 1; FIN TANT QUE FIN FONCTION FAUX !!!!

 « FAIRE TOURNER » un algorithme • Exemple: Tester si un nombre est

« 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 est. Premier(nombre) : boolean; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier : = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; SINON est. Premier : = VRAI; Diviseur : = Diviseur + 1; FIN TANT QUE FIN FONCTION

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier : = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat : = test. Si. Premier(9); Nombre 9 est. Premier Diviseur resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier : = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier 9 VRAI Diviseur resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre % diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier : = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier : = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier : = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier : = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 FAUX resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 4 resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 FAUX 4 resultat

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : =

FONCTION test. Si. Premier(nombre) : boolean; est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 4 FAUX resultat

FONCTION test. Si. Premier(nombre) est. Premier : = VRAI; Diviseur : = 2; TANT

FONCTION test. Si. Premier(nombre) est. Premier : = VRAI; Diviseur : = 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier : = FAUX; diviseur : = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 4 resultat

FONCTION test. Si. Premier(nombre) est. Premier = VRAI; Diviseur = 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier = VRAI; Diviseur = 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier = FAUX; diviseur = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur resultat 9 VRAI 2 3 4 FAUX

FONCTION test. Si. Premier(nombre) est. Premier = VRAI; Diviseur = 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier = VRAI; Diviseur = 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier = FAUX; diviseur = diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat = test. Si. Premier(9); Nombre est. Premier Diviseur resultat 9 VRAI 2 3 4 FAUX

 « FAIRE TOURNER » un algorithme • Exemple: Tester si un nombre est

« 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 est. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; FIN TANT QUE FIN FONCTION

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre 9 est. Premier Diviseur resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier 9 VRAI Diviseur resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 FAUX resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 FAUX 4 resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 FAUX 4 resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 FAUX 4 resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur 9 VRAI 2 3 FAUX 4 resultat

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre

FONCTION test. Si. Premier(nombre) est. Premier ← VRAI; Diviseur ← 2; TANT QUE diviseur<nombre ET est. Premier = VRAI FAIRE SI (nombre MOD diviseur = 0) ALORS est. Premier ← FAUX; diviseur ← diviseur + 1; FIN TANT QUE RETOURNER est. Premier; FIN FONCTION EXEMPLE: resultat ← test. Si. Premier(9); Nombre est. Premier Diviseur resultat 9 VRAI 2 3 FAUX 4 FAUX 5

Sondage Récursion

Sondage Récursion

 • Exemple : factoriel(5); • factoriel : = 5 * 4 * 3

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

Sondage function factoriel(n : integer) : integer; begin var resultat : integer; Condition d’arrêt

Sondage function factoriel(n : integer) : integer; begin var resultat : integer; Condition d’arrêt : la fonction n’est plus appelé par elle-même if ((n = 0) OR (n = 1) then resultat : = 1; else resultat = n * factoriel(n-1); result : = end resultat;

 • Appel de fonction : factoriel(5); • • • factoriel : = 5

• 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 ))));

Sondage Complexité

Sondage Complexité

Sondage Jeux de cartes 54, sortir les jokers 1 minute Jeux de cartes 108

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)

Sondage Trier 100 entrées 10 minutes Puis les mettre ensemble quelques minutes Trier 200

Sondage Trier 100 entrées 10 minutes Puis les mettre ensemble quelques minutes Trier 200 entrées >> 20 minutes Comportement quadratique O(N 2) Comportement quadratique O(N log N)

Sondage Trier 100 entrées 10 minutes Puis les mettre ensemble quelques minutes Trier 200

Sondage Trier 100 entrées 10 minutes Puis les mettre ensemble quelques minutes Trier 200 entrées >> 20 minutes Comportement quadratique O(N 2) BON : 7 Comportement quadratique O(N log N) FAUX : 38