Les algorithmes
Objectifs de la section
1-1 Notion de traitement automatique et d’algorithme
1-2 Identification des données disponibles et du résultat attendu
1-3 Techniques de décomposition d’un problème complexe en plusieurs sous-problèmes plus simples
1-6 Méthodes et séquence de développement d’un programme
Temps requis
30 minutes
Un algorithme est une séquence d'opérations pour effectuer un calcul ou produire un résultat. On peut exprimer un algorithme par le langage naturel, des langages visuels ou par langage de programmation.
On peut voir l'algorithme comme la structure d'un programme informatique. Vous avez vu plusieurs petits algorithmes depuis le début de la session, et même, dans d'autres sphères de votre vie. Un exemple d'algorithme dans la vie courante est une recette de cuisine : il s'agit d'une procédure à appliquer de façon méthodique.
Prenons l'exemple du problème suivant : on souhaite à partir de 3 points déterminer les angles intérieurs d'un triangle. Sur l'image ci-dessous, on connait l'information en bleu et l'on cherche l'information en vert.

Si vous deviez résoudre ce problème sur une feuille de papier, vous pourriez par exemple calculer les vecteurs \(\overrightarrow{AB}\) et \(\overrightarrow{AC}\) puis utiliser les propriétés du produit scalaire pour calculer l'angle \(<\overrightarrow{AB}, \overrightarrow{AC}> = ||\overrightarrow{AB}|| \cdot ||\overrightarrow{AC}|| \cdot \cos(\alpha)\). On peut ensuite répéter cette méthode pour trouver \(\beta\) et \(\gamma\).
La démarche mathématique
Voici un exemple de démarche mathématique telle qu'elle serait réalisée à la mitaine pour calculer l'angle \(\alpha\).
Calcul des vecteurs
Calcul des normes
Calcul de l'angle
Une autre personne, toujours pour calculer les longueurs \(a\), \(b\) et \(c\) (qui sont respectivement les normes des vecteurs \(\overrightarrow{CB}\), \(\overrightarrow{AC}\) et \(\overrightarrow{AB}\)), ourrait plutôt choisir d'utiliser la loi des cosinus (\(a=\sqrt{b^2+c^2-2bc\cdot\cos(\alpha)}\)) pour trouver les angles.
La démarche mathématique
Voici un exemple de démarche mathématique telle qu'elle serait réalisée à la mitaine pour calculer l'angle \(\alpha\).
Calcul des vecteurs
Calcul des normes
Calcul de l'angle
Ce sont deux algorithmes différents qui permettent d'obtenir le même résultat. Exprimons ces algorithmes avec le langage clair.
Entrée : les 2 coordonnées des 3 points (6 nombres à virgules)
Sortie : affichage des trois angles
- Calculer le vecteur \(\overrightarrow{AB}\) et \(\overrightarrow{CB}\);
- Calculer la norme de \(\overrightarrow{AB}\) et de \(\overrightarrow{CB}\);
- Calculer l'angle \(\beta\) avec la formule du produit scalaire;
- Calculer le vecteur \(\overrightarrow{BA}\) et \(\overrightarrow{CA}\);
- Calculer la norme de \(\overrightarrow{BA}\) et de \(\overrightarrow{CA}\);
- Calculer l'angle \(\alpha\) avec la formule du produit scalaire;
- Calculer l'angle \(\gamma\) avec la formule \(\gamma = 180 - \alpha - \beta\);
- Afficher les 3 angles.
Entrée : les 2 coordonnées des 3 points (6 nombres à virgules)
Sortie : affichage des trois angles
- Calculer les vecteurs \(\overrightarrow{CB}\), \(\overrightarrow{AC}\) et \(\overrightarrow{AB}\);
- Calculer la norme de chaque vecteur pour obtenir les valeurs de \(a, b \text{ et } c\);
- Utiliser la loi des cosinus pour calculer \(\alpha\) et \(\beta\);
- Calculer l'angle \(\gamma\) avec la formule \(\gamma = 180 - \alpha - \beta\);
- Afficher les 3 angles.
On peut coder ces algorithmes avec Python maintenant, MAIS on peut aussi continuer de réfléchir avant de continuer et appliquer la règle d'or des programmeurs et programmeuses
Règle d'or de la programmation
Un bon programmeur, une bonne programmeuse agit de la façon la plus paresseuse possible !
Cette maxime de sagesse populaire (qu'il faut prendre avec un grain de sel) résume bien des règles importantes dans l'élaboration d'un bon code, soit qu'on évite de répéter du code. En effet, répéter le même code, en plus de nous prendre plus de temps à créer, peut amener les erreurs à se répéter.
Division de l'algorithme avec le produit scalaire
Concentrons-nous pour l'instant dans l'algorithme avec le produit scalaire et cherchons les opérations répétées :
- Calculer deux vecteurs à partir de quatre points;
- Calculer la norme d'un vecteur;
- Appliquer la formule du produit scalaire.
On va donc créer un algorithme spécifiquement pour trouver un angle à partir de quatre points que l'on va pouvoir appeler 2 fois. Dans le livre du cours, c'est ce qui est appelé sous-programme, mais nous utiliserons plutôt le terme fonction. À la page sur les fonctions, vous avez toutes les informations sur la syntaxe des fonctions.
Voici donc les algorithmes de ce programme.
Entrée : les coordonnées des extrémités des vecteurs.
Sortie : retourne la norme du vecteur sous forme d'un nombre à virugle.
- Calculer la coordonnée en X du vecteur;
- Calculer la coordonnée en Y du vecteur;
- Appliquer la formule de la norme;
- Retourner le résultat.
Entrée : les coordonnées des extrémités des deux vecteurs pour lesquels calculer le produit scalaire.
Sortie : retourne le produit scalaire des vecteurs sous forme d'un nombre à virugle.
- Calculer le produit scalaire;
- Retourner le produit scalaire.
Entrée : les coordonnées des trois points qui crée l'angle. L'angle calculé est celui du premier point.
Sortie : l'angle en degrée entre les deux vecteurs.
- Calculer la norme des deux vecteurs;
- Calculer le produit scalaire des deux vecteurs;
- Calculer l'angle avec la relation du produit scalaire;
- Retourner le résultat.
Entrée : les coordonnées des trois points qui forment le triangle. Sortie : affichage des trois angles.
- Calculer l'angle \(\alpha\);
- Calculer l'angle \(\beta\);
- Calculer l'angle \(\gamma\) avec la formule \(\gamma = 180 - \alpha - \beta\);
- Afficher les 3 angles.
Télécharger le code complet avec la documentation
Division de l'algorithme avec la loi des cosinus
Reportons-nous maintenant à l'algorithme avec la loi des cosinus et cherchons les opérations répétées :
- Calculer la norme de chaque vecteur à partir de ces coordonnées;
- Appliquer la formule de la loi des cosinus.
Nous allons pouvoir réutiliser la fonction calculer_norme
de la précédente démonstration, car elle répond toujours à nos besoins.
Voici donc les algorithmes de ce programme.
Entrée : les coordonnées des extrémités des vecteurs.
Sortie : retourne la norme du vecteur sous forme d'un nombre à virugle.
- Calculer la coordonnée en X du vecteur;
- Calculer la coordonnée en Y du vecteur;
- Appliquer la formule de la norme;
- Retourner le résultat.
Entrée : les coordonnées des trois côté du triangle. L'angle calculé est celui opposé au premier point.
Sortie : l'angle opposé au premier côté en degrées.
- Appliquer la formule de la lois des cosinus pour calculer l'angle;
- Retourner le résultat.
Entrée : les coordonnées des trois points qui forment le triangle.
Sortie : affichage des trois angles.
- Calculer l'angle \(\alpha\);
- Calculer l'angle \(\beta\);
- Calculer l'angle \(\gamma\) avec la formule \(\gamma = 180 - \alpha - \beta\);
- Afficher les 3 angles.
Télécharger le code complet avec la documentation
Gabarits de travail
Les gabarits suivants sont utilisés pour aider à structurer les algorithmes.
Gabarit de planification
Gabarit de planification (avec consigne)
Exemple du gabarit de planification avec le problème des trois angles