La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Algorithmes et structures de données 3ème cours Patrick Reuter"— Transcription de la présentation:

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

2 Ingrédients dalgorithmes Affectation Condition/Comparaison Appel de fonction Structure de contrôle –Branchements conditionnels (multiples) –Boucles Bloc dinstruction

3 Ajourdhui Sondage Organisation de la mémoire Types de bases

4 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;

5 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;

6 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 : 16 MOYEN : 0 FAUX : 20

7 Sondage BOUCLE

8 Ingrédients dalgorithmes Structure de contrôle –Boucle TANT QUE FAIRE FIN TANT QUE ou FAIRE TANT QUE

9 Sondage Bloc dinstruction à répéter : writeln("Jadore les lundi"); i := i + 1;

10 Bloc dinstruction Bloc dinstruction à répéter : (toujours dans begin end sil y a plusieurs) begin writeln("Jadore les lundi"); i := i + 1; end

11 Boucle Condition darrêt : i>5 while (i<=5) do begin writeln("Jadore les lundi"); i := i + 1; end

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

13 Sondage var i : integer; i := 1; while (i<=5) do begin writeln("Jadore les lundi"); i := i + 1; end i123456i123456

14 Sondage var i : integer; i := 1; while (i<=5) do begin writeln("Jadore les lundi"); i := i + 1; end i123456i123456 BON : 36 MOYEN : 0 FAUX : 11

15 Ingrédients dalgorithmes Structure de contrôle –Branchements conditionnels SI ALORS SINON

16 Ingrédients dalgorithmes Structure de contrôle –Branchements conditionnels SI ALORS SINON Exemple: SI (score>meilleur_score) ALORS meilleur_score := score;

17 Ingrédients dalgorithmes Structure de contrôle –Branchements conditionnels SI ALORS SINON Exemple: SI (score>meilleur_score) ALORS meilleur_score := score; En PASCAL : IF (score>meilleur_score) THEN meilleur_score := score;

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

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

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

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

22 function estNegatif(entree : integer) : boolean; begin if (entree < 0) then result := true; else result := false; end;

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

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

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

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

27 « 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 FAIRE SI (nombre MOD diviseur = 0) ALORS estPremier := FAUX; Diviseur := Diviseur + 1; FIN TANT QUE FIN FONCTION

28 « 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) ALORS estPremier := FAUX; SINON estPremier := VRAI; Diviseur := Diviseur + 1; FIN TANT QUE FIN FONCTION FAUX !!!!

29 « 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) ALORS estPremier := FAUX; SINON estPremier := VRAI; Diviseur := Diviseur + 1; FIN TANT QUE FIN FONCTION

30 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 estPremier EXEMPLE: resultat = testSiPremier(9); resultatNombre

31 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 estPremier EXEMPLE: resultat := testSiPremier(9); resultatNombre 9

32 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 estPremier VRAI Nombre 9 EXEMPLE: resultat = testSiPremier(9); resultat

33 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

34 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

35 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

36 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 3 estPremier VRAI Nombre 9 EXEMPLE: resultat = testSiPremier(9); resultat

37 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 3 estPremier VRAI Nombre 9 EXEMPLE: resultat = testSiPremier(9); resultat

38 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 3 estPremier VRAI Nombre 9 EXEMPLE: resultat = testSiPremier(9); resultat

39 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 3 estPremier VRAI FAUX Nombre 9 EXEMPLE: resultat = testSiPremier(9); resultat

40 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 3 4 estPremier VRAI Nombre 9 EXEMPLE: resultat = testSiPremier(9); resultat

41 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 3 4 estPremier VRAI FAUX Nombre 9 EXEMPLE: resultat = testSiPremier(9); resultat

42 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 3 4 estPremier VRAI FAUX Nombre 9 EXEMPLE: resultat = testSiPremier(9); resultat

43 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 3 4 estPremier VRAI Nombre 9 EXEMPLE: resultat = testSiPremier(9); resultat

44 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 3 4 FAUX estPremier VRAI Nombre 9 EXEMPLE: resultat = testSiPremier(9); resultat

45 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 3 4 FAUX estPremier VRAI Nombre 9 EXEMPLE: resultat = testSiPremier(9); resultat

46 « 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) ALORS estPremier FAUX; FIN TANT QUE FIN FONCTION

47 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 estPremier EXEMPLE: resultat testSiPremier(9); resultatNombre

48 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 estPremier EXEMPLE: resultat testSiPremier(9); resultatNombre 9

49 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 estPremier VRAI Nombre 9 EXEMPLE: resultat testSiPremier(9); resultat

50 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

51 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

52 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

53 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 3 estPremier VRAI Nombre 9 EXEMPLE: resultat testSiPremier(9); resultat

54 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 3 estPremier VRAI Nombre 9 EXEMPLE: resultat testSiPremier(9); resultat

55 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 3 estPremier VRAI Nombre 9 EXEMPLE: resultat testSiPremier(9); resultat

56 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 3 estPremier VRAI FAUX Nombre 9 EXEMPLE: resultat testSiPremier(9); resultat

57 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 3 4 estPremier VRAI FAUX Nombre 9 EXEMPLE: resultat testSiPremier(9); resultat

58 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 3 4 estPremier VRAI FAUX Nombre 9 EXEMPLE: resultat testSiPremier(9); resultat

59 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 3 4 estPremier VRAI FAUX Nombre 9 EXEMPLE: resultat testSiPremier(9); resultat

60 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 3 4 estPremier VRAI FAUX Nombre 9 EXEMPLE: resultat testSiPremier(9); resultat

61 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 3 4 FAUX 5 estPremier VRAI FAUX Nombre 9 EXEMPLE: resultat testSiPremier(9); resultat

62 Sondage Récursion

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

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

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

66 Sondage Complexité

67 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)

68 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)

69 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) BON : 7 FAUX : 38


Télécharger ppt "Algorithmes et structures de données 3ème cours Patrick Reuter"

Présentations similaires


Annonces Google