QCM : Spécification des programmes Python (18 questions)

Questions et réponses du QCM

1. Quelle propriété caractérise une expression en programmation ?

Elle modifie nécessairement l’environnement d’exécution.
Elle peut être évaluée pour produire une valeur.
Elle décrit les données d’entrée d’une fonction.
Elle demande au programme d’effectuer une action.

Elle peut être évaluée pour produire une valeur.

Explication

Une expression est une construction dont l’évaluation produit une valeur. Une instruction demande plutôt au programme d’effectuer une action.

2. Dans la distinction entre expression et instruction, quel rôle remplit une instruction ?

Elle fournit toujours une valeur comme résultat de son évaluation.
Elle demande à Python d’effectuer une action.
Elle décrit une propriété vérifiée par la sortie d’un programme.
Elle précise les contraintes imposées aux entrées d’une fonction.

Elle demande à Python d’effectuer une action.

Explication

Une instruction demande à Python d’effectuer une action. Produire une valeur par évaluation caractérise une expression, et non le rôle général d’une instruction.

3. Lorsqu’un programme exécute `x = 3`, quelle description est correcte ?

L’affectation est une postcondition qui décrit l’état final du programme.
L’affectation est une expression qui renvoie la valeur de `x`.
L’affectation est une instruction qui modifie l’environnement d’exécution.
L’affectation est une précondition qui impose une contrainte à `x`.

L’affectation est une instruction qui modifie l’environnement d’exécution.

Explication

En Python, une affectation telle que `x = 3` est une instruction qui modifie l’environnement d’exécution. Elle ne se définit pas comme une expression renvoyant la valeur de `x`.

4. Une fonction affiche un message puis renvoie un nombre ; qu’est-ce qui constitue ici un effet de bord ?

La condition que l’argument doit respecter avant l’appel de la fonction.
La modification observable de l’environnement produite en plus de la valeur de retour éventuelle.
La valeur numérique renvoyée par la fonction après son calcul.
La valeur calculée temporairement puis utilisée dans l’expression de retour.

La modification observable de l’environnement produite en plus de la valeur de retour éventuelle.

Explication

Un effet de bord est une modification observable de l’environnement, distincte de la valeur de retour éventuelle ; l’affichage en est un exemple. Le nombre renvoyé est la valeur de retour, pas l’effet de bord.

5. Que précise le contrat d’une fonction ?

Les erreurs qu’elle affiche et les valeurs temporaires qu’elle calcule.
Les variables globales qu’elle modifie et les fichiers qu’elle crée.
Les instructions qu’elle exécute et l’ordre dans lequel elle les exécute.
Les données qu’elle reçoit et celles qu’elle produit.

Les données qu’elle reçoit et celles qu’elle produit.

Explication

Le contrat précise les données d’entrée de la fonction et ses données de sortie. Il ne se réduit pas à la description de ses instructions internes.

6. Pour décrire les données d’entrée d’une fonction, quels éléments la spécification précise-t-elle ?

Leur nombre, leur type et les contraintes qu’elles doivent respecter.
Leur ordre d’affichage, leur durée de vie et leur emplacement mémoire.
Leur signification, leur résultat et les propriétés qu’elles vérifient.
Leur valeur de retour, leur effet de bord et leur condition d’arrêt.

Leur nombre, leur type et les contraintes qu’elles doivent respecter.

Explication

La spécification des entrées indique leur nombre, leur type et les contraintes applicables. La signification et les propriétés vérifiées concernent plutôt la description des sorties.

7. Lorsqu’une spécification décrit les données de sortie d’une fonction, que précise-t-elle ?

Leur nombre, leur type et les contraintes imposées avant l’appel.
Leur type, leur signification et les propriétés qu’elles vérifient.
Les arguments transmis, leur ordre et leur durée de conservation.
Les variables modifiées, les fichiers créés et les messages affichés.

Leur type, leur signification et les propriétés qu’elles vérifient.

Explication

Pour les sorties, la spécification indique le type, la signification et les propriétés vérifiées par les résultats. Le nombre et les contraintes des données d’entrée décrivent plutôt ce qui est fourni à la fonction.

8. Avant l’appel d’une fonction, une condition impose que son argument soit positif ; comment cette condition se nomme-t-elle ?

Un effet de bord, qui désigne une modification de l’environnement.
Une postcondition, qui décrit ce qui doit être vrai après l’exécution.
Une précondition, qui décrit ce qui doit être vrai avant l’exécution.
Une valeur de retour, qui résume le résultat produit par l’appel.

Une précondition, qui décrit ce qui doit être vrai avant l’exécution.

Explication

Une précondition décrit ce qui doit être vrai avant l’exécution d’un programme ou d’une fonction. Une postcondition porte sur ce qui doit être vrai après l’exécution.

9. Après l’exécution d’une fonction, une condition affirme une propriété du résultat ; comment la nomme-t-on ?

Une instruction, qui demande au programme d’effectuer une action.
Une donnée d’entrée, qui fournit un argument à la fonction appelée.
Une postcondition, qui décrit ce qui doit être vrai après l’exécution.
Une précondition, qui décrit ce qui doit être vrai avant l’exécution.

Une postcondition, qui décrit ce qui doit être vrai après l’exécution.

Explication

Une postcondition décrit ce qui doit être vrai après l’exécution d’un programme ou d’une fonction. Une précondition précise plutôt les conditions qui doivent être réunies avant l’exécution.

10. Une fonction est appelée alors que sa précondition P est vraie ; quelle affirmation exprime la correction de la fonction ?

La précondition P devient nécessairement fausse après l’exécution.
La correction exige que P et Q soient vraies avant l’exécution.
La fonction renvoie une valeur égale à la précondition P.
La postcondition Q est vraie après l’exécution.

La postcondition Q est vraie après l’exécution.

Explication

La correction signifie que si P est vraie avant l’exécution, Q est vraie après celle-ci. Elle n’exige pas que P devienne fausse, ni que P et Q soient vraies avant l’appel.

11. Quelle caractéristique définit un invariant de boucle ?

Une condition qui devient vraie dès que la boucle commence
Une propriété qui reste vraie à chaque étape de la boucle
Une propriété vérifiée uniquement après la dernière itération
Une valeur qui change nécessairement à chaque itération

Une propriété qui reste vraie à chaque étape de la boucle

Explication

Un invariant est une propriété qui demeure vraie à chaque étape de l’exécution de la boucle. Une propriété vérifiée seulement à la fin ne suffit pas à caractériser un invariant.

12. Pour démontrer qu’un invariant établit la correction d’une boucle, quelle démarche faut-il suivre ?

Établir la postcondition avant la boucle, puis vérifier que l’invariant est vrai à la fin
Vérifier qu’il est conservé à chaque itération, sans établir qu’il est vrai au départ
Montrer qu’il est vrai au départ, conservé à chaque itération et suffisant pour établir la postcondition
Montrer qu’il est vrai après la première itération, puis vérifier uniquement la postcondition finale

Montrer qu’il est vrai au départ, conservé à chaque itération et suffisant pour établir la postcondition

Explication

La preuve exige d’établir l’invariant avant la première itération, sa conservation après chaque itération, puis son utilité pour démontrer la postcondition finale. Vérifier sa conservation sans établir sa vérité initiale ne prouve pas qu’il s’applique à la boucle.

13. Que garantit une précondition au sujet du comportement d’une fonction ?

La fonction rejette automatiquement toute entrée qui ne respecte pas la précondition
Le comportement de la fonction est garanti quelle que soit la valeur de ses entrées
Le comportement de la fonction est garanti lorsque les conditions de la précondition sont satisfaites
La fonction vérifie automatiquement que les conditions de la précondition sont satisfaites

Le comportement de la fonction est garanti lorsque les conditions de la précondition sont satisfaites

Explication

Une précondition précise les circonstances dans lesquelles le comportement de la fonction est garanti, sans imposer à elle seule un contrôle des entrées. La vérification automatique évoquée dans un distracteur doit être prévue séparément dans le programme.

14. Comment un programme peut-il signaler que l’entrée de `inverse(x)` ne respecte pas la précondition lorsque x vaut 0 ?

En poursuivant le calcul de l’inverse sans signaler le cas
En retournant la valeur de x lorsque x vaut 0
En levant une erreur `ValueError` lorsque x vaut 0
En retournant 0 lorsque x vaut 0

En levant une erreur `ValueError` lorsque x vaut 0

Explication

Le programme peut contrôler cette précondition en levant `ValueError` si x vaut 0. Retourner 0 ne signale pas l’entrée invalide et ne correspond pas au mécanisme décrit.

15. Quelle spécification correspond à la fonction `compte(L, x)` ?

L est une liste et la fonction retourne le nombre de ses éléments différents de x
L est un nombre et la fonction retourne le nombre de fois que x le divise
L est une liste et la fonction retourne l’indice du premier élément égal à x
L est une liste et la fonction retourne le nombre de ses éléments égaux à x

L est une liste et la fonction retourne le nombre de ses éléments égaux à x

Explication

La précondition exige que L soit une liste, et la postcondition demande de retourner le nombre d’éléments de L égaux à x. Compter les éléments différents de x ne satisfait pas cette postcondition.

16. Quel ensemble de tests vérifie les cas proposés pour `compte(L, x)` ?

`compte([2], 2)`, `compte([1,2,3], 2)`, `compte([1,2,3], 4)` et `compte([5,5,5], 5)`
`compte([], 2)`, `compte([1,2,3], 2)`, `compte([1,2,3], 1)` et `compte([5,5,5], 5)`
`compte([], 2)`, `compte([1,2,2,3], 2)`, `compte([1,2,3], 4)` et `compte([5,5,5], 5)`
`compte([], 2)`, `compte([2,2,2], 2)`, `compte([1,2,3], 4)` et `compte([5,5,5], 4)`

`compte([], 2)`, `compte([1,2,2,3], 2)`, `compte([1,2,3], 4)` et `compte([5,5,5], 5)`

Explication

Cet ensemble couvre une liste vide, une valeur répétée dans une liste, une valeur absente et une liste composée uniquement de répétitions de la valeur cherchée. Le cas où la valeur est absente d’une liste non vide ne remplace pas le test de la liste vide.

17. Quelle condition doit satisfaire la liste L pour que la recherche dichotomique présentée puisse s’y appliquer ?

Elle doit contenir des éléments tous distincts.
Elle doit avoir un nombre pair d’éléments.
Elle doit être triée dans l’ordre décroissant.
Elle doit être triée dans l’ordre croissant.

Elle doit être triée dans l’ordre croissant.

Explication

La recherche dichotomique présentée repose sur une liste ordonnée dans le sens croissant pour réduire l’intervalle de recherche. Un ordre décroissant ne satisfait pas cette condition telle qu’elle est formulée.

18. Quel résultat la recherche dichotomique présentée fournit-elle pour déterminer si x appartient à L ?

Un booléen indiquant si x appartient à L.
La position centrale de l’intervalle de recherche.
L’indice de x dans L, ou une valeur d’absence.
Le nombre d’éléments de L inférieurs à x.

Un booléen indiquant si x appartient à L.

Explication

Le résultat de l’algorithme est un booléen qui indique si x est présent dans L. Un indice donnerait une information de localisation, mais ce n’est pas le résultat spécifié ici.

Révisez avec les flashcards

Mémorisez les réponses avec 46 flashcards sur Spécification des programmes Python.

Qu’est-ce qu’une expression en programmation ?

Une construction évaluable qui produit une valeur.

Que demande une instruction à Python ?

D’effectuer une action.

Quel effet l’affectation `x = 3` a-t-elle en Python ?

Elle modifie l’environnement d’exécution.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Spécification des programmes Python.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM