⌨ Spécialité NSI · Numérique et sciences informatiques Première Générale · Chapitre 7

Langages et programmation : fonctions, spécification et tests

Constructions élémentaires d'un langage, fonctions et portée des variables, spécification (docstring, préconditions, postconditions), assertions et jeux de tests, mise au point et erreurs fréquentes, modules et bibliothèques.

1. Constructions élémentaires

Propriété · Les briques de tout programme

Affectation, séquence d'instructions, instruction conditionnelle (if/elif/else), boucle bornée (for), boucle non bornée (while), appel de fonction. Tous les langages impératifs (Python, C, JavaScript…) les proposent avec des syntaxes différentes.

2. Fonctions et spécification

paramètrespréconditionsfonction(boîte noire documentée)résultat renvoyépostconditionsLes tests vérifient que la fonction respecte sa spécification.
Une fonction spécifiée : ce qu'elle attend (préconditions) et ce qu'elle garantit (postconditions).

Exemple · Une fonction documentée

def moyenne(notes):
    """Renvoie la moyenne d'une liste de nombres.
    Précondition : notes est une liste non vide de nombres.
    Postcondition : le résultat est compris entre min(notes) et max(notes)."""
    assert len(notes) > 0, "liste vide"
    return sum(notes) / len(notes)

Définition · Portée

Une variable créée dans une fonction est locale : elle n'existe que pendant l'exécution de la fonction. Une fonction communique avec l'extérieur par ses paramètres et sa valeur de retour (return), pas par des variables globales.

3. Tester

Propriété · Assertions et jeux de tests

assert condition provoque une erreur si la condition est fausse. Un jeu de tests couvre des cas usuels, des cas limites (liste à un élément, valeurs égales, zéro, négatifs) et des cas d'erreur. Un test réussi ne prouve pas que le programme est correct, mais un test échoué prouve une erreur.

Exemple · Tests

assert moyenne([10, 20]) == 15
assert moyenne([12]) == 12
assert moyenne([-4, 4]) == 0

4. Mise au point

Attention · Erreurs fréquentes

Indentation incorrecte ; = au lieu de == ; indice hors limites (range(len(t) + 1)) ; boucle infinie ; oubli du return (la fonction renvoie alors None) ; division entière // confondue avec /. Afficher des valeurs intermédiaires (print) ou utiliser un débogueur aide à localiser l'erreur.

Activité · Utiliser une bibliothèque

MatérielPython.
ConsigneImporter le module math et le module random ; afficher $\sqrt{2}$ et tirer un entier au hasard entre $1$ et $6$. Consulter l'aide avec help(math.sqrt).
Résultatimport math, random ; math.sqrt(2) donne 1.4142135623730951 ; random.randint(1, 6).
BilanRéutiliser des fonctions documentées évite de « réinventer la roue » ; la documentation est la spécification des fonctions.

⚠️ Une erreur dans ce cours ? Signalez-la

S'entraîner

Exercices corrigés

🎓 20 exercices corrigés et un quiz vous attendent dans ce chapitre.

Créez votre compte gratuit pour voir les corrections, faire les quiz et suivre votre progression.

Vérifier

Avez-vous bien compris ?

Répondez au quiz : la correction s'affiche immédiatement.