infor 101 chapitre 3 marianne morris. infor 101 algorithmes et pseudocode programmation en c++...
TRANSCRIPT
![Page 1: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/1.jpg)
INFOR 101Chapitre 3
Marianne Morris
![Page 2: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/2.jpg)
INFOR 101
Algorithmes et Pseudocode Programmation en C++ Architecture de l’ordinateur Langage assembleur Intro aux réseaux et à l’intelligence
artificielle
![Page 3: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/3.jpg)
Révision du chapitre 2
Algorithmes Pseudocode Opérations en séquence Opérations de condition Opérations itératives
![Page 4: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/4.jpg)
Révision du chapitre 2 Une fois qu’on a construit un
algorithme, on peut utiliser celui-ci pour développer des algorithmes plus sophistiqués
Librairie Une collection d’algorithmes utiles Un instrument important pour le
développement d’algorithmes
![Page 5: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/5.jpg)
Révision du chapitre 2
Méthode descendante (top-down) Pour résoudre des problèmes compliqués
Brouillon de l’algorithme pour réfléchir aux opérations de haut niveau
Élaborer les opérations de haut niveau après avoir développé un schéma brouillon de l’algorithme
Répéter jusqu’à ce que toutes les opérations de haut niveau soient développées à partir d’opérations plus simples
![Page 6: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/6.jpg)
Révision du chapitre 2 Développement d’algorithmes
Corrects et efficaces Plusieurs étapes inclues pseudocode,
brouillon et copies plus évoluées! Utiliser des méthodes descendantes (top-
down)
Utilisation du pseudocode Pour aider à développer des algorithmes Lisible, non ambigu, facile à analyser
![Page 7: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/7.jpg)
Exercice 2.1: Exponentiel
Développez un algorithme pour calculer la valeur exponentielle d’un nombre donné
Demandez à l’utilisateur d’entrer deux valeurs: le nombre et la puissance
Utiliser une boucle dans votre algorithme… Imprimez à l’écran de l’ordinateur le résultat
de l’opération exponentielle
![Page 8: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/8.jpg)
Solution de l’exercice 2.1:Exponentiel Get values for n and xwhile (x < 0) {
output “Please enter x 0”read x
} If (n == 0) then set result to 0else if (n == 1 or x == 0) then set result to 1else { set result to 1
set count to 1while (count ≤ x)
result = result * n }Output the value of result
![Page 9: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/9.jpg)
Exercice 2: Recherche et pattern-matching
Trouver si la séquence de lettres existe dans une liste de lettres alphabétiques Séquence de lettres: « abbd » Liste contient un nombre N de lettres Algorithme:
Lire N à l’écran Rechercher la liste en utilisant une boucle et
des conditions « if… else » Imprimer « found » ou « not found » à l’écran
![Page 10: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/10.jpg)
Figure 2.16Pattern-Matching Algorithm
![Page 11: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/11.jpg)
Chapitre 3: L’efficacité des algorithmes
Objectifs:
Attributs des algorithmes Mesurer l’efficacité des algorithmes Analyses des algorithmes
![Page 12: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/12.jpg)
Introduction
Caractéristiques importantes des algorithmes:
Corrects Faciles à comprendre Élégants Efficaces
![Page 13: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/13.jpg)
Attributs des algorithmes
Corrects Est-ce que l’algorithme résout le problème
pour lequel il a été construit? Est-ce qu’il résout le problème correctement?
Faciles à comprendre Est-ce que l’algorithme est lisible et facile à
modifier? Important pour la réécriture de programmes!
![Page 14: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/14.jpg)
Attributs des algorithmes Élégants
Est-ce que l’algorithme est intelligent, bien écrit et sophistiqué?
Attention: conflit possible entre élégance et facilité à comprendre
Efficaces Combien de temps et d’espace
l’algorithme prend quand il est exécuté? Attribut très important!
![Page 15: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/15.jpg)
Mesurer l’efficacité des algorithmes
Analyse des algorithmes Étudier l’efficacité de plusieurs algorithmes
Mesurer l’efficacité en tant que fonction qui relie le montant des données au temps et à l’espace que l’algorithme utilise Étudier le meilleur scénario, le pire scénario et
le scénario typique La notation représente l’ordre de
magnitude de la fonction de l’efficacité
![Page 16: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/16.jpg)
L’ordre de magnitude: Ordre n
Quand n est grand, l’effet des coefficients et des termes d’ordre plus petit devient plus faible Ex: n/2, n, 2n, 3n n
Toutes fonctions linéaires sont équivalentes
L’ordre de magnitude n Les fonctions varient en tant que c x n (n)
![Page 17: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/17.jpg)
Figure 3.4Work = cn for Various Values of c
![Page 18: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/18.jpg)
Recherche en séquence
Chercher un nom NAME dans une liste de n noms
Commencer au début de la liste et comparer NAME à chaque entrée dans la liste jusqu’à ce qu’on trouve la bonne entrée
![Page 19: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/19.jpg)
Figure 3.1Sequential Search Algorithm
![Page 20: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/20.jpg)
Recherche en séquence
Analyse de l’efficacité de l’algorithme pour une liste de n entrées
Meilleur scénario: NAME est le premier dans la liste Une seule comparaison (1)
![Page 21: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/21.jpg)
Recherche en séquence
Analyse d’efficacité – liste de n entrées Pire scénario:
NAME est le dernier dans la liste NAME n’est pas dans la liste n comparaisons (n)
Scénario typique: À peu près n/2 comparaisons (n)
![Page 22: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/22.jpg)
Utiliser l’espace efficacement
L’algorithme ne devrait pas utiliser plus d’espace (mémoire pour stockage) que l’espace occupé par les données originales
![Page 23: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/23.jpg)
Selection sort
Réarranger une séquence de n valeurs pour qu’elles soient en ordre
L’algorithme Chercher la plus grande valeur dans une
section de la liste Déplacer cette valeur dans une position
plus correcte dans la section déjà triée de la liste
Utiliser l’algorithme « Find Largest »
![Page 24: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/24.jpg)
Figure 3.6Selection Sort Algorithm
![Page 25: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/25.jpg)
Selection sort
L’algorithme exécute Find Largest n fois Chaque fois avec une plus petite liste Coût = n-1 + (n-2) + … + 2 + 1 = n(n-
1)/2
Find Largest fait m-1 comparaisons pour une liste de m valeurs
![Page 26: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/26.jpg)
Selection sort Efficacité temps:
Comparaisons: n(n-1)/2 Échanges: n (swap largest en sa
position) Ordre: (n2), meilleur et pire scénarios
Efficacité espace: Espace pour la séquence d’entrées et
un nombre constant de variables locales
![Page 27: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/27.jpg)
L’ordre de magnitude: Ordre n2
Toutes fonctions avec termes d’ordre plus élevé cn2 sont plus ou moins équivalentes (ont des formes similaires)
Un algorithme qui fait des opérations de cn2 (où c est une constante) est donc d’ordre n2 ou bien (n2)
![Page 28: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/28.jpg)
L’ordre de magnitude: Ordre n2
(n2) > (n) peu importe les constantes s’il y en a
Un algorithme qui exécute à (n) est bien plus efficace qu’un autre à (n2)
![Page 29: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/29.jpg)
Figure 3.10Work = cn2 for Various Values of c
![Page 30: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/30.jpg)
Figure 3.11A Comparison of n and n2
![Page 31: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/31.jpg)
Binary Search
Liste déjà en ordre Chercher NAME en comparant par
l’élément au milieu Restreindre la recherche à la moitié
inférieure ou supérieure de la liste si on n’a pas encore trouvé l’entrée voulue
Chaque passe élimine la moitié de la liste
![Page 32: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/32.jpg)
Figure 3.18Binary Search Algorithm (list must be sorted)
![Page 33: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/33.jpg)
Binary Search Efficacité:
Meilleur scénario: Une seule comparaison (1)
Pire scénario: lg n comparaisons
lg2 n : le nombre n peut être divisé par 2 avant d’atteindre 1
(lg n)
![Page 34: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/34.jpg)
Binary Search
Compromis Recherche en séquence (Sequential
Search) Lent mais bon pour des données non
ordonnées Binary Search
Plus rapide mais la liste doit être en ordre
![Page 35: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/35.jpg)
Figure 3.21A Comparison of n and lg n
![Page 36: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/36.jpg)
Pattern Matching
Mesurer deux données: m: la longueur de la string du motif n: la longueur du texte
L’unité de travail Comparaison d’une lettre du motif
avec une lettre du texte
![Page 37: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/37.jpg)
Figure 2.16Pattern-Matching Algorithm
![Page 38: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/38.jpg)
Pattern Matching Efficacité:
Meilleur scénario: Motif n’a pas de correspondant n - m + 1 comparaisons (n)
Pire scénario: Le motif a un correspondant à chaque
point (m -1)(n - m + 1) comparaisons (m x n)
![Page 39: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/39.jpg)
Figure 3.22Order-of-Magnitude Time Efficiency Summary
![Page 40: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/40.jpg)
Figure 3.25Comparisons of lg n, n, n2 , and 2n
![Page 41: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/41.jpg)
Figure 3.27A Comparison of Four Orders of Magnitude
![Page 42: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/42.jpg)
Lectures
Vous êtes encouragé(e)s de lire chapitre 3 surtout les algorithmes dans la section 3.4.1 (aussi diapos # 43-45) pour enrichir vos connaissances et pour pratiquer pour l’examen…
![Page 43: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/43.jpg)
Figure 3.14The Shuffle-Left Algorithm for Data Cleanup
![Page 44: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/44.jpg)
Figure 3.15The Copy-Over Algorithm for Data Cleanup
![Page 45: INFOR 101 Chapitre 3 Marianne Morris. INFOR 101 Algorithmes et Pseudocode Programmation en C++ Architecture de lordinateur Langage assembleur Intro aux](https://reader035.vdocuments.site/reader035/viewer/2022062404/551d9d9f497959293b8ccf28/html5/thumbnails/45.jpg)
Figure 3.16The Converging-Pointers Algorithm for Data Cleanup