Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parBlancheflour Chapelle Modifié depuis plus de 11 années
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.