Algorithmes classiques : somme, maximum, comptage

Définition, méthode pas à pas, exemple corrigé et exercice type contrôle de Seconde.

Maths Seconde Lecture : 5 min Programme officiel 2019

En algorithmique, les algorithmes classiques de somme, de maximum et de comptage permettent de traiter des listes de données. Ils sont basés sur l'itération (boucles) et l'utilisation de variables pour accumuler un résultat (somme), suivre la plus grande valeur (maximum) ou compter des occurrences (comptage). Ces algorithmes sont fondamentaux pour l'analyse de données.

Bon réflexe : Toujours initialiser les variables de résultat avant de commencer une boucle pour éviter les erreurs et garantir la justesse du calcul.
1

Initialiser les variables

Avant de parcourir la liste, il faut initialiser les variables qui vont stocker le résultat. Pour une somme, on initialise à $0$. Pour un maximum, on initialise avec la première valeur de la liste (ou une valeur très petite si la liste peut être vide ou contenir des nombres négatifs). Pour un comptage, on initialise à $0$.

2

Parcourir la liste

Utiliser une boucle (par exemple, for element in liste: en Python) pour visiter chaque élément de la liste, un par un.

3

Mettre à jour le résultat

À chaque itération de la boucle, mettre à jour la variable de résultat :

  • Somme : ajouter l'élément courant à la variable de somme.
  • Maximum : si l'élément courant est supérieur à la variable de maximum, remplacer le maximum par cet élément.
  • Comptage : si l'élément courant satisfait une certaine condition, incrémenter la variable de comptage.

4

Retourner le résultat

Une fois la boucle terminée, la variable de résultat contient la somme, le maximum ou le compte final. On peut alors l'afficher ou la retourner.

On considère la liste de nombres entiers suivante : notes = [12, 8, 15, 10, 15, 7]. Écrire un programme Python qui calcule la somme des notes, la note maximale et le nombre de notes égales à $15$.
1
Initialisation des variables
notes = [12, 8, 15, 10, 15, 7]
somme_notes = 0
note_max = notes[0] # On initialise avec le premier élément
compte_quinze = 0
2
Parcours de la liste et mise à jour
for note in notes:
    # Somme
    somme_notes = somme_notes + note

    # Maximum
    if note > note_max:
        note_max = note

    # Comptage
    if note == 15:
        compte_quinze = compte_quinze + 1
3
Affichage des résultats
print(f"La somme des notes est : {somme_notes}")
print(f"La note maximale est : {note_max}")
print(f"Le nombre de notes égales à 15 est : {compte_quinze}")
Le programme affichera :
La somme des notes est : 67
La note maximale est : 15
Le nombre de notes égales à 15 est : 2
  1. Pour la somme : Oublier d'initialiser la variable de somme à $0$. Si elle n'est pas initialisée, le programme peut générer une erreur ou un résultat imprévisible.
  2. Pour le maximum : Initialiser la variable de maximum à $0$ si la liste peut contenir uniquement des nombres négatifs. Dans ce cas, le maximum serait $0$ alors qu'il devrait être un nombre négatif. Il est préférable d'initialiser avec le premier élément de la liste (liste[0]) ou une valeur très petite (ex: -float('inf') pour des nombres réels).
  3. Pour le comptage : Oublier d'initialiser la variable de comptage à $0$. Le compte serait alors incorrect.
On considère la liste de températures journalières (en degrés Celsius) pour une semaine : temperatures = [18, 20, 17, 22, 19, 20, 21].
  1. Écrire un programme Python qui calcule la température moyenne de la semaine.
  2. Écrire un programme Python qui trouve la température minimale de la semaine.
  3. Écrire un programme Python qui compte le nombre de jours où la température a été supérieure ou égale à $20$°C.
temperatures = [18, 20, 17, 22, 19, 20, 21]

# Question 1 : Température moyenne
somme_temperatures = 0
for temp in temperatures:
    somme_temperatures = somme_temperatures + temp
moyenne_temperatures = somme_temperatures / len(temperatures)
print(f"La température moyenne est : {moyenne_temperatures:.2f}°C")

# Question 2 : Température minimale
temp_min = temperatures[0] # Initialisation avec le premier élément
for temp in temperatures:
    if temp < temp_min:
        temp_min = temp
print(f"La température minimale est : {temp_min}°C")

# Question 3 : Nombre de jours >= 20°C
jours_chauds = 0
for temp in temperatures:
    if temp >= 20:
        jours_chauds = jours_chauds + 1
print(f"Nombre de jours avec une température >= 20°C : {jours_chauds}")

Résultats attendus :

  • La température moyenne est : $19.57$°C
  • La température minimale est : $17$°C
  • Nombre de jours avec une température $\geq 20$°C : $4$

Questions fréquentes

Peut-on utiliser ces algorithmes avec des listes vides ?
Non, pas directement sans précautions. Si la liste est vide, notes[0] (pour l'initialisation du maximum) provoquerait une erreur. Il faut ajouter une condition pour vérifier si la liste est vide avant de commencer le traitement, par exemple if len(liste) == 0:.
Ces algorithmes sont-ils efficaces pour de très grandes listes ?
Oui, ces algorithmes sont très efficaces. Ils parcourent la liste une seule fois, ce qui signifie que leur temps d'exécution est proportionnel à la taille de la liste. On parle de complexité linéaire, notée $O(n)$, où $n$ est la taille de la liste.
Comment trouver le minimum au lieu du maximum ?
Pour trouver le minimum, le principe est le même que pour le maximum. Il faut initialiser la variable du minimum avec la première valeur de la liste (ou une valeur très grande si la liste peut être vide ou contenir des nombres positifs) et, dans la boucle, utiliser une condition if element < variable_minimum: pour mettre à jour la variable.
Existe-t-il des fonctions Python intégrées pour ces opérations ?
Oui, Python offre des fonctions intégrées très pratiques : sum(liste) pour la somme, max(liste) pour le maximum, et min(liste) pour le minimum. Pour le comptage, la méthode liste.count(element) permet de compter les occurrences d'un élément spécifique. Cependant, il est essentiel de savoir implémenter ces algorithmes soi-même pour comprendre les bases de la programmation.

Le passage en Seconde est difficile ?

Adil accompagne les élèves de Seconde, à domicile dans le Val d'Oise ou en ligne. Un seul prof, du premier cours jusqu'au Bac.

06 20 13 00 82 Cours de maths en Seconde →