<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de maths/Seconde/Algorithmique et programmation</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>Types de variables (entier, flottant, chaîne de caractères),<br/>
affectation et séquence d'instructions, instruction conditionnelle,<br/>
boucles bornées et non bornées, fonctions : écrire, lire, compléter<br/>
et appeler. Programmes en Python ou en langage naturel.</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q01 : Le type d'une valeur entre guillemets</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Après l'instruction a = "12", quel est le type de la variable a ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>En Python, le type se lit sur l'écriture de la valeur : 12 est un<br/>
entier (int), 12.0 un flottant (float), "12" une chaîne de<br/>
caractères (str).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un flottant, le nombre 12{,}0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un flottant s'écrit avec un point, comme 12.0, et<br/>
sans guillemets.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un booléen, vrai ou faux</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un booléen ne prend que les valeurs True et False.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Une chaîne de caractères</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les guillemets signalent un texte. La variable<br/>
contient les caractères « 1 » et « 2 », pas le nombre douze.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un entier, le nombre douze</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans les guillemets, a = 12 serait bien un entier.<br/>
Les guillemets transforment la valeur en texte.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q02 : Le type d'un quotient</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Après l'instruction m = 7 / 2, quel est le type de m ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>7 / 2 vaut 3.5 (flottant), 7 // 2 vaut 3 (quotient entier)<br/>
et 7 % 2 vaut 1 (reste de la division euclidienne).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Cela dépend des valeurs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec /, le résultat est un flottant quelles que<br/>
soient les valeurs, même lorsque la division tombe juste.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une chaîne</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucun guillemet n'apparaît, le résultat est un nombre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un entier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : même 8 / 2 donne 4.0, un flottant. Le quotient<br/>
entier s'obtient avec //.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un flottant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'opérateur / renvoie toujours un flottant.<br/>
Ici m vaut 3.5.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q03 : Suivre deux affectations</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est la valeur de x après l'exécution de ces instructions ?</p>
<p>`<code>python<br/>
x = 5<br/>
x = x + 3<br/>
x = 2 * x<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation x = expression calcule d'abord l'expression avec<br/>
la valeur actuelle de x, puis range le résultat dans x. On suit<br/>
le programme ligne par ligne.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la deuxième ligne a été oubliée. Elle modifie x avant<br/>
le doublement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>16</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : x vaut d'abord 5, puis 5 + 3,<br/>
puis le double de ce résultat, soit 16.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la dernière ligne a été oubliée. La valeur de x est<br/>
encore doublée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>13</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur d'ordre : les instructions s'exécutent de haut en bas.<br/>
On ajoute 3 avant de doubler.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q04 : Échanger deux variables</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On veut échanger les contenus des variables a et b. Quelle<br/>
séquence d'instructions convient ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation remplace l'ancienne valeur. Pour échanger deux<br/>
contenus, il faut une variable auxiliaire qui conserve l'une des<br/>
deux valeurs.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>b = a, puis a = b</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : même défaut dans l'autre sens. Les deux variables<br/>
finissent avec la valeur initiale de a.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>c = a, puis a = b, puis b = c</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la variable c garde une copie de l'ancienne<br/>
valeur de a avant qu'elle soit écrasée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>a = b, puis b = a</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : après a = b, l'ancienne valeur de a est perdue.<br/>
Les deux variables finissent avec la valeur de b.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>c = a, puis b = c, puis a = b</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : b reçoit l'ancienne valeur de a, puis a reçoit<br/>
cette même valeur. L'ancienne valeur de b est perdue.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q05 : Traduire une formule en Python</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On connaît le rayon r et la hauteur h d'un cylindre. Quelle<br/>
instruction range son volume V = π r² h dans la variable V ?<br/>
On suppose que pi contient une valeur approchée de π.</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation s'écrit variable = expression. Dans l'expression,<br/>
les produits s'écrivent <em> et les puissances </em>*.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>V = pi r² h</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python n'accepte ni la multiplication sous-entendue ni<br/>
l'exposant écrit en petit : chaque opération doit être écrite.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>pi <em> r </em><em> 2 </em> h = V</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la variable qui reçoit la valeur s'écrit à gauche du<br/>
signe d'affectation, jamais à droite.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>V = pi <em> r </em><em> 2 </em> h</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : *<em> est l'opérateur de puissance, et chaque<br/>
produit s'écrit avec </em>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>V = pi <em> r ^ 2 </em> h</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en Python, ^ n'est pas la puissance. La puissance<br/>
s'écrit **.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q06 : Additionner une saisie</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un programme contient n = input("Nombre ? "). L'utilisateur tape<br/>
5. Pourquoi l'instruction n + 1 provoque-t-elle une erreur ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>input renvoie une chaîne de caractères. Pour calculer, on la<br/>
convertit avec int (entier) ou float (flottant).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>n contient le texte "5", pas un nombre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : input renvoie toujours du texte. On écrit<br/>
n = int(input("Nombre ? ")) pour obtenir un entier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>n est vide tant que le programme n'est pas relancé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la saisie est bien rangée dans n, mais sous forme de<br/>
texte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>n contient le flottant 5.0, incompatible avec 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un flottant s'additionne sans difficulté à un entier.<br/>
Le problème vient du type chaîne.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le nombre 1 doit s'écrire 1.0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le type du nombre ajouté n'est pas en cause. On ne peut<br/>
pas ajouter un nombre à une chaîne de caractères.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q07 : Quotient et reste en Python</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que valent 17 // 5 et 17 % 5 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Division euclidienne : a // b est le quotient entier et a % b<br/>
le reste, avec a == b * (a // b) + a % b.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>3 et 2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 17 = 5 × 3 + 2 avec<br/>
0 ≤ 2 &lt; 5 : // donne le quotient, % le reste.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3 et 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : % ne donne 0 que lorsque la division tombe juste,<br/>
ce qui n'est pas le cas ici.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>17 et 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ces opérateurs effectuent la division euclidienne de<br/>
17 par 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2 et 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les rôles sont inversés. // donne le quotient<br/>
entier, % donne le reste.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q08 : Une affectation en langage naturel</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Dans un algorithme en langage naturel, que signifie l'instruction<br/>
u ← u + 3 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La flèche ← note l'affectation dans un algorithme en<br/>
langage naturel ; elle correspond au signe = de Python.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>On compare u et u + 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une comparaison ne modifie aucune variable. La flèche<br/>
modifie la valeur de u.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une équation d'inconnue u, sans solution</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la flèche désigne une affectation, pas une égalité à<br/>
résoudre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>La valeur de u augmente de 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on calcule u + 3 avec la valeur actuelle de<br/>
u, puis on range le résultat dans u.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La variable u prend la valeur 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait u ← 3. Ici, on ajoute 3 à la<br/>
valeur déjà présente.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q09 : Suivre un test</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle valeur le programme suivant affiche-t-il ?</p>
<p>`<code>python<br/>
x = 7<br/>
if x &gt; 5:<br/>
    y = 2 * x<br/>
else:<br/>
    y = x + 1<br/>
print(y)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Avec if … else, exactement un bloc s'exécute : celui du if si la<br/>
condition est vraie, celui du else sinon.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les deux valeurs 14 et 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un seul des deux blocs s'exécute, jamais les deux.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le calcul de l'autre bloc. La condition<br/>
x &gt; 5 décide du bloc exécuté.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche y, qui a été calculé à partir<br/>
de x, pas x lui-même.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>14</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on compare 7 à 5 pour savoir quel bloc<br/>
s'exécute, puis on applique le seul calcul de ce bloc.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q10 : Tester une égalité</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle condition teste si la variable n vaut 0 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Comparaisons en Python : == (égal), != (différent), &lt;, &lt;=,<br/>
&gt;, &gt;=. Le signe = seul réalise une affectation.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>n == 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le double signe == compare deux valeurs et<br/>
donne True ou False.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>n = 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un seul signe = est une affectation. Il range 0<br/>
dans n au lieu de le comparer.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>n != 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : != teste la <strong>différence</strong>. Cette condition est vraie<br/>
quand n ne vaut pas 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>n =&gt; 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette écriture n'existe pas en Python. « Supérieur ou<br/>
égal » s'écrit &gt;=, et ce n'est pas un test d'égalité.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q11 : Tester la parité</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle condition est vraie exactement lorsque l'entier n est<br/>
pair ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'entier n est multiple de d lorsque n % d == 0. Pour la<br/>
parité, on prend d = 2.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>n % 2 == 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : un entier est pair lorsque le reste de sa<br/>
division par 2 est nul.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>n // 2 == 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le quotient entier n // 2 vaut 0 pour n = 0 ou<br/>
n = 1 seulement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>n % 2 == 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un reste égal à 1 caractérise les entiers<br/>
<strong>impairs</strong>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>n / 2 == 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : n / 2 vaut 0 seulement si n vaut 0. C'est le<br/>
reste qu'il faut tester.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q12 : Trois cas avec elif</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?</p>
<p>`<code>python<br/>
note = 14<br/>
if note &gt;= 16:<br/>
    print("TB")<br/>
elif note &gt;= 12:<br/>
    print("B")<br/>
else:<br/>
    print("P")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>if … elif … else examine les conditions dans l'ordre et exécute<br/>
seulement le bloc de la première condition vraie.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>TB</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 14 n'est pas supérieur ou égal à 16, la première<br/>
condition est fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>B puis P</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : dès qu'une condition est vraie, les blocs suivants sont<br/>
ignorés. Le else ne s'exécute pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>P</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le else ne s'exécute que si toutes les conditions<br/>
précédentes sont fausses, or 14 ≥ 12.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>B</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 14 ≥ 16 est faux, 14 ≥ 12 est vrai :<br/>
le bloc du elif s'exécute, puis le test s'arrête.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q13 : Appartenir à un intervalle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle condition est vraie exactement lorsque le nombre x<br/>
appartient à l'intervalle [2 ; 5[ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>x ∈ [a ; b[ se traduit par x &gt;= a and x &lt; b : un crochet<br/>
fermé donne une inégalité large, un crochet ouvert une inégalité<br/>
stricte.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>x &gt;= 2 and x &lt; 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les deux inégalités doivent être vraies en même<br/>
temps, d'où and. La borne 2 est incluse, la borne 5<br/>
exclue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x &gt;= 2 and x &lt;= 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette condition accepte x = 5, alors que le crochet<br/>
de droite est ouvert.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x &gt; 2 and x &lt;= 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette condition traduit ]2 ; 5]. Les crochets sont<br/>
inversés.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x &gt;= 2 or x &lt; 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec or, une seule inégalité suffit. Tout réel<br/>
vérifie alors la condition, par exemple x = 100.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q14 : Compléter un test d'alignement</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>La fonction suivante doit renvoyer True lorsque les points<br/>
A(x_A ; y_A), B(x_B ; y_B) et C(x_C ; y_C) sont<br/>
alignés, les abscisses x_A, x_B et x_C étant distinctes.<br/>
Quelle condition compléter ?</p>
<p>`<code>python<br/>
def alignes(xA, yA, xB, yB, xC, yC):<br/>
    m1 = (yB - yA) / (xB - xA)<br/>
    m2 = (yC - yA) / (xC - xA)<br/>
    return ...<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Trois points d'abscisses distinctes sont alignés lorsque les<br/>
coefficients directeurs de (AB) et de (AC) sont égaux. Avec des<br/>
flottants, l'égalité peut échouer à cause des arrondis : on compare<br/>
alors l'écart à une petite tolérance.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>m1 == 0 and m2 == 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette condition ne reconnaît que les points alignés sur<br/>
une droite horizontale.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>m1 * m2 == -1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette condition caractérise deux droites<br/>
perpendiculaires dans un repère orthonormé, pas l'alignement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>m1 == m2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les droites (AB) et (AC) ont un point<br/>
commun ; elles sont confondues si et seulement si elles ont le<br/>
même coefficient directeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>m1 + m2 == 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : des coefficients opposés donnent des droites<br/>
symétriques, pas confondues.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q15 : Combien de tours de boucle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Combien de fois le corps de la boucle for i in range(10):<br/>
est-il exécuté ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>range(n) produit les entiers de 0 à n - 1, soit n valeurs ;<br/>
range(a, b) produit les entiers de a à b - 1.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Tant que i est inférieur à 10, sans fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une boucle for sur range est bornée : son nombre de<br/>
tours est connu à l'avance.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>9 fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : range(10) commence à 0. Les valeurs de 0 à 9<br/>
sont au nombre de 10.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>11 fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la borne 10 est exclue. La dernière valeur de i<br/>
est 9.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>10 fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : i prend les valeurs 0, 1, …, 9, soit<br/>
10 valeurs.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q16 : Une somme calculée par une boucle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?</p>
<p>`<code>python<br/>
s = 0<br/>
for k in range(1, 5 + 1):<br/>
    s = s + k<br/>
print(s)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Motif de l'accumulateur : initialiser s = 0 avant la boucle, puis<br/>
ajouter à chaque tour. range(1, n + 1) parcourt les entiers de<br/>
1 à n.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>15</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la boucle ajoute les entiers de 1 à 5 :<br/>
1 + 2 + ⋯ + 5 = 15.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la borne 5 + 1 est exclue, mais 5 est bien<br/>
ajouté. La somme s'arrête à 5, pas à 5 - 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : s accumule les valeurs successives de k, elle ne<br/>
garde pas seulement la dernière.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>21</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la valeur 5 + 1 n'est jamais prise par k, car la<br/>
borne de droite de range est exclue.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q17 : Une boucle tant que</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?</p>
<p>`<code>python<br/>
n = 1<br/>
while n &lt; 50:<br/>
    n = 3 * n<br/>
print(n)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une boucle while répète son corps tant que la condition est vraie.<br/>
À la sortie, la condition est fausse : ici, n est la première<br/>
puissance de 3 supérieure ou égale à 50.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Rien, la boucle ne s'arrête jamais</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : n augmente à chaque tour et finit par dépasser 50 :<br/>
la condition devient fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>50</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 50 est le seuil de la condition, mais n ne prend que<br/>
des puissances de 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>81</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : n prend les valeurs 1, 3, 9, 27, puis<br/>
81. Comme 81 &lt; 50 est faux, la boucle s'arrête.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>27</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 27 &lt; 50 est vrai, donc la boucle fait encore un tour<br/>
et n devient 81.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q18 : Choisir le type de boucle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un capital de 1 000 euros augmente de 3\ % par an. On cherche<br/>
le nombre d'années nécessaires pour qu'il dépasse 1 500 euros.<br/>
Quelle boucle convient ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Boucle bornée (for) : le nombre de répétitions est connu à<br/>
l'avance. Boucle non bornée (while) : on répète jusqu'à ce qu'une<br/>
condition change, comme un dépassement de seuil.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une boucle for i in range(1500)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 1 500 est un montant, pas un nombre d'années. Cette<br/>
boucle ferait 1 500 tours sans s'arrêter au seuil.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Une boucle while, arrêtée au seuil</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on répète tant que le capital ne dépasse pas<br/>
1 500, et l'on compte les tours.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une boucle for, car on connaît le taux</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : connaître le taux ne donne pas le nombre de tours. C'est<br/>
justement ce nombre que l'on cherche.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucune boucle, un seul calcul suffit</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en seconde, sans outil pour inverser 1{,}03^n, on<br/>
calcule les capitaux année après année.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q19 : Compléter un algorithme de seuil</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On veut afficher le nombre d'années au bout duquel le capital de<br/>
1 000 euros, placé à 3\ % par an, dépasse 1 500 euros.<br/>
Quelle ligne manque ?</p>
<p>`<code>python<br/>
c = 1000<br/>
n = 0<br/>
while c &lt;= 1500:<br/>
    c = c * 1.03<br/>
    ...<br/>
print(n)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Algorithme de seuil : une variable évolue dans la boucle et une<br/>
autre compte les tours. À la sortie, le compteur donne le premier<br/>
rang où la condition est dépassée.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>n = n + 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : n compte les années. Il augmente de 1 à<br/>
chaque tour, en même temps que le capital.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>c = c + 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le capital est déjà mis à jour à la ligne précédente, et<br/>
n resterait à 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>n = 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : n vaudrait toujours 1, quel que soit le nombre de<br/>
tours effectués.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>n = c</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : n recevrait le montant du capital, pas un nombre<br/>
d'années.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q20 : Une boucle qui ne s'arrête pas</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi ce programme ne s'arrête-t-il jamais ?</p>
<p>`<code>python<br/>
x = 10<br/>
while x &gt; 0:<br/>
    x = x + 2<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Avant d'écrire une boucle while, on vérifie que le corps de la<br/>
boucle fait évoluer les variables vers la sortie.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La variable x n'est pas initialisée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la première ligne donne à x la valeur 10.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une boucle while s'exécute toujours sans fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une boucle while s'arrête dès que sa condition<br/>
devient fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il manque une instruction print</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'absence d'affichage n'empêche pas un programme de se<br/>
terminer.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>x augmente, donc x &gt; 0 reste toujours vrai</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la condition de sortie ne devient jamais fausse.<br/>
Il faudrait par exemple x = x - 2.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q21 : Des tours qui modifient une valeur</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?</p>
<p>`<code>python<br/>
u = 2<br/>
for i in range(3):<br/>
    u = 2 * u + 1<br/>
print(u)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour lire une boucle, on dresse un tableau des valeurs successives<br/>
de la variable, un tour par ligne.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>23</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la boucle applique 3 fois la transformation<br/>
« doubler puis ajouter 1 » à partir de 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>16</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'ajout de 1 à chaque tour a été oublié.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>47</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un tour de trop. range(3) fait 3 tours, pas<br/>
3 + 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>11</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il manque un tour. range(3) fait exactement 3<br/>
tours.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q22 : Une condition dans une boucle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?</p>
<p>`<code>python<br/>
c = 0<br/>
for k in range(1, 21):<br/>
    if k % 3 == 0 or k % 5 == 0:<br/>
        c = c + 1<br/>
print(c)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le compteur augmente une fois par valeur de k qui vérifie la<br/>
condition. Une condition avec or est vraie dès qu'une des deux<br/>
parties l'est.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait le nombre d'entiers multiples de 3 <strong>et</strong><br/>
de 5. Le mot or demande l'un ou l'autre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>9</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 6 multiples de 3 et 4 multiples de 5<br/>
entre 1 et 20, mais 15 est compté deux fois : 6 + 4 - 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 15 est multiple de 3 et de 5, mais le compteur<br/>
n'augmente qu'une fois pour lui.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'entier 20 est bien examiné, car range(1, 21)<br/>
s'arrête à 20.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q23 : Appeler une fonction</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On définit la fonction suivante. Que vaut f(3) ?</p>
<p>`<code>python<br/>
def f(x):<br/>
    return x ** 2 - 4<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Appeler f(a), c'est exécuter le corps de la fonction avec le<br/>
paramètre x égal à a. L'instruction return renvoie le<br/>
résultat.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : x ** 2 est le carré de x, pas son double.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on remplace x par 3 dans l'expression renvoyée : on élève 3 au carré, puis on retranche 4, ce qui donne 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>13</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur de signe : la fonction retranche 4 au carré.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x ** 2 - 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'appel f(3) renvoie une valeur numérique, calculée<br/>
avec x = 3.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q24 : Écrire une fonction affine</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle définition correspond à la fonction g : x ↦ 3x - 1 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une fonction Python se définit par def nom(paramètre):, suivi d'un<br/>
bloc indenté qui se termine par return valeur.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>python<br/>
def g(x):<br/>
    y = 3 * x - 1<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la valeur est calculée puis perdue. Sans return, la<br/>
fonction ne renvoie rien d'utilisable.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>`<code>python<br/>
def g(x):<br/>
    return 3 * x - 1<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'en-tête nomme la fonction et son paramètre, et<br/>
return renvoie l'image.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>python<br/>
g(x) = 3 * x - 1<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est une écriture mathématique. En Python, une<br/>
fonction se définit avec def.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>python<br/>
def g(x):<br/>
    print(3x - 1)<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 3x n'est pas une écriture valide, et print affiche<br/>
la valeur sans la renvoyer : g(2) + 1 échouerait.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q25 : Renvoyer ou afficher</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle différence y a-t-il entre return et print dans une<br/>
fonction ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une fonction mathématique associe une image à un nombre : en Python,<br/>
c'est return qui fournit cette image au reste du programme.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>return ne s'utilise qu'avec des nombres entiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une fonction peut renvoyer un flottant, une chaîne ou un<br/>
booléen.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucune : les deux font apparaître le résultat</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une valeur affichée par print ne peut pas être<br/>
réutilisée dans un calcul.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>return rend la valeur réutilisable</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la valeur renvoyée peut être rangée dans une<br/>
variable ou réutilisée dans un calcul. print se contente de<br/>
l'afficher à l'écran.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>print arrête la fonction, return non</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'inverse. return termine immédiatement la<br/>
fonction.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q26 : Une fonction à deux paramètres</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On définit la fonction suivante. Que vaut moyenne(12, 17) ?</p>
<p>`<code>python<br/>
def moyenne(a, b):<br/>
    return (a + b) / 2<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Lors de l'appel, les arguments sont affectés aux paramètres dans<br/>
l'ordre : le premier à a, le second à b.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>14{,}5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : a vaut 12 et b vaut 17 :<br/>
(12 + 17) / 2 = 14{,}5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>20{,}5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur de priorité : les parenthèses imposent de faire la somme<br/>
avant la division, pas 12 + 17 / 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>14{,}0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 12 + 17 = 29 est impair, sa moitié n'est donc pas un entier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>29</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la somme a bien été calculée, mais pas la division par<br/>
2.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q27 : Une fonction qui teste</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On veut une fonction est_diviseur(d, n) qui renvoie True si d<br/>
divise l'entier n, et False sinon. Quelle définition convient ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une condition est une expression de type booléen : on peut la<br/>
renvoyer telle quelle, sans if.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>python<br/>
def est_diviseur(d, n):<br/>
    return n // d<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette fonction renvoie un quotient, pas un booléen.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>`<code>python<br/>
def est_diviseur(d, n):<br/>
    return n % d == 0<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la comparaison n % d == 0 vaut déjà True ou<br/>
False, on la renvoie directement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>python<br/>
def est_diviseur(d, n):<br/>
    return d % n == 0<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les rôles sont inversés. Ce test indique si n divise<br/>
d.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>python<br/>
def est_diviseur(d, n):<br/>
    if n % d == 0:<br/>
        return True<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : si d ne divise pas n, aucune instruction return<br/>
n'est exécutée et la fonction ne renvoie pas False.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q28 : Simuler un lancer de dé</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Le module random est importé. Quelle fonction renvoie le résultat<br/>
d'un lancer de dé équilibré à six faces ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>random.randint(a, b) renvoie un entier aléatoire de a à b,<br/>
bornes incluses ; random.random() renvoie un flottant de<br/>
[0 ; 1[.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>`<code>python<br/>
def de():<br/>
    return random.randint(1, 6)<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : randint(1, 6) renvoie un entier au hasard entre<br/>
1 et 6, <strong>bornes comprises</strong>, chacun avec la même<br/>
probabilité.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>python<br/>
def de():<br/>
    return 6 * random.random()<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : random() renvoie un flottant. On obtiendrait des<br/>
valeurs comme 3{,}74, pas des entiers.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>python<br/>
def de():<br/>
    return random.randint(1, 7)<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux bornes de randint sont comprises, donc 7<br/>
pourrait sortir.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>python<br/>
def de():<br/>
    return random.randint(0, 6)<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette fonction peut renvoyer 0, qui n'est pas une face<br/>
du dé : il y aurait sept résultats possibles.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q29 : Fréquence de six sur des lancers</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Le module random est importé. Que renvoie f(1000) ?</p>
<p>`<code>python<br/>
def f(n):<br/>
    c = 0<br/>
    for i in range(n):<br/>
        if random.randint(1, 6) == 6:<br/>
            c = c + 1<br/>
    return c / n<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Fonction de simulation : répéter une expérience aléatoire, compter<br/>
les succès, renvoyer la fréquence. La loi des grands nombres<br/>
explique qu'elle se rapproche de la probabilité quand n grandit.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>La fréquence de six sur 1 000 lancers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : c compte les six obtenus, puis on divise par<br/>
le nombre de lancers. Le résultat est souvent proche de<br/>
⅙.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le dernier résultat du dé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les résultats des lancers ne sont pas conservés. Seul<br/>
le compteur c l'est.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Exactement ⅙</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le résultat dépend du hasard et varie d'un appel à<br/>
l'autre, autour de ⅙.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le nombre de six sur 1 000 lancers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait return c. La division par n transforme<br/>
l'effectif en fréquence.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q30 : Modifier une fonction de seuil</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>La fonction ci-dessous renvoie le nombre d'années nécessaires pour<br/>
qu'un capital de 1 000 euros, placé à 3\ % par an, dépasse le<br/>
montant m. Comment la modifier pour que le taux devienne un<br/>
paramètre t exprimé en pourcentage ?</p>
<p>`<code>python<br/>
def annees(m):<br/>
    c = 1000<br/>
    n = 0<br/>
    while c &lt;= m:<br/>
        c = c * 1.03<br/>
        n = n + 1<br/>
    return n<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Transformer une valeur écrite en dur en paramètre rend la fonction<br/>
réutilisable : on l'ajoute dans l'en-tête, puis on l'utilise dans le<br/>
corps.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>En-tête def annees(m, t): et ligne c = c * t</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pour t = 3, le capital serait multiplié par 3, soit<br/>
une hausse de 200\ %.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Ligne c = c * (1 + t / 100) sans changer l'en-tête</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : t ne serait défini nulle part, ce qui provoque une<br/>
erreur à l'exécution. Il doit figurer parmi les paramètres.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>En-tête def annees(m, t): et ligne c = c + t</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on ajouterait t euros par an, une évolution linéaire<br/>
et non une hausse en pourcentage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>En-tête def annees(m, t):, facteur 1 + t / 100</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : une hausse de t\ % multiplie par<br/>
1 + t/100. Pour t = 3, on retrouve 1{,}03.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q31 : Le signe d'un nombre par un test à trois branches</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
x = 0<br/>
if x &lt; 0:<br/>
    print("negatif")<br/>
elif x == 0:<br/>
    print("nul")<br/>
else:<br/>
    print("positif")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une structure if, elif, else partage les valeurs en cas<br/>
disjoints : négatif, nul ou positif.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>negatif</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : relisez la comparaison de 0 avec 0 dans chaque<br/>
test.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>nul</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les tests sont examinés dans l'ordre et la<br/>
première condition vraie l'emporte ; pour x = 0, c'est la<br/>
branche nul.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>positif</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette branche correspond à une autre valeur de x.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les trois mots, chaque branche étant parcourue</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec elif et else, une seule branche s'exécute.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q32 : Afficher le plus grand de deux nombres</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
a = 7<br/>
b = 12<br/>
if a &gt; b:<br/>
    print(a)<br/>
else:<br/>
    print(b)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Ce programme calcule le maximum de deux nombres : une condition<br/>
choisit la valeur à afficher.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>19, la somme</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune addition n'est faite.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7, la plus petite</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le test a &gt; b sélectionne la plus grande valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>12</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le programme affiche a si a &gt; b, sinon b ;<br/>
dans les deux cas, c'est la plus grande des deux valeurs, ou leur<br/>
valeur commune si elles sont égales.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7 puis 12</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une seule des deux branches s'exécute.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q33 : En dehors d'un intervalle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
x = 5<br/>
if x &lt; 2 or x &gt; 8:<br/>
    print("hors")<br/>
else:<br/>
    print("dans")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>« En dehors de [2 ; 8] » se traduit par x &lt; 2 or x &gt; 8 ; « dans »<br/>
par 2 &lt;= x &lt;= 8.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>dans, 5 étant entre 2 et 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la condition x &lt; 2 or x &gt; 8 est vraie dès<br/>
qu'une des deux comparaisons l'est ; sinon, x est dans<br/>
[2 ; 8].</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5, la valeur de x</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche un mot, pas la valeur de x.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>hors, 5 n'étant ni 2 ni 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : testez chaque comparaison avec x = 5 ; un seul<br/>
or vrai suffit à afficher hors.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, deux comparaisons ne pouvant être combinées</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : or sert précisément à combiner deux conditions.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q34 : Une condition avant une racine carrée</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Avant de calculer sqrt(x) dans un programme, quelle condition<br/>
faut-il tester pour éviter une erreur ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un test conditionnel sert aussi à vérifier qu'un calcul est<br/>
possible : domaine de définition d'une racine, d'un quotient.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x &gt; 0, zéro n'ayant pas de racine carrée définie</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : √0 = 0 existe ; exclure zéro est inutile.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>x &gt;= 0, la racine exigeant un nombre positif ou nul</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : √x n'existe que pour x ≥ 0 ; le<br/>
test protège l'appel de sqrt, qui échouerait pour un nombre<br/>
négatif.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x != 0, pour éviter une division par zéro cachée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il n'y a pas de division ici ; le danger est un nombre<br/>
négatif.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x &lt;= 0, la racine carrée demandant un nombre négatif</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'inverse, la racine carrée demande un nombre<br/>
positif ou nul.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q35 : Additionner deux chaînes de chiffres</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que vaut l'expression "3" + "4" ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le même symbole + additionne des nombres et concatène des<br/>
chaînes : le type des valeurs décide.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>'7', la somme écrite entre guillemets</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python ne calcule pas sur des chaînes, il les<br/>
juxtapose.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, les chaînes ne pouvant pas s'additionner</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : + entre deux chaînes est autorisé et les concatène.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7, la somme des deux entiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les guillemets font de "3" et "4" des chaînes,<br/>
pas des entiers ; il faudrait int("3") + int("4").</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>'34', la concaténation des deux chaînes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : entre guillemets, "3" et "4" sont des<br/>
chaînes de caractères ; + les met bout à bout.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q36 : Deux affectations successives sur une variable</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que vaut a à la fin de ce programme ?<br/>
`<code>python<br/>
a = 5<br/>
a = a + 3<br/>
a = a * 2<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Chaque affectation remplace la valeur de a par le résultat du<br/>
calcul fait avec sa valeur courante.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>11, le produit étant prioritaire sur l'addition</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il n'y a pas une expression mais deux instructions<br/>
exécutées l'une après l'autre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>16, l'addition puis le produit, dans l'ordre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : après la deuxième ligne a vaut 8,<br/>
puis la troisième la multiplie par 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>13, le produit effectué avant l'addition</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les instructions s'exécutent dans l'ordre d'écriture.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10, les trois nombres additionnés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la troisième ligne multiplie, elle n'additionne pas.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q37 : Priorité de la puissance dans une affectation</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que vaut x après l'instruction x = 2 *<em> 3 </em> 2 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>En Python comme en mathématiques, la puissance précède le produit.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>12, les trois nombres multipliés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ** est une puissance, pas une multiplication.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8, le produit puis la somme</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il n'y a ni somme ni produit 2 × 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>16, la puissance étant calculée avant le produit</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : *<em> est prioritaire sur </em>, donc<br/>
2³ × 2 = 16.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>64, le produit des exposants</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est 2 *<em> (3 </em> 2) qui donnerait ce résultat.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q38 : Année bissextile</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
a = 1900<br/>
if a % 4 == 0 and a % 100 != 0 or a % 400 == 0:<br/>
    print("bissextile")<br/>
else:<br/>
    print("non bissextile")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une année est bissextile si elle est divisible par 4 sans<br/>
l'être par 100, ou si elle est divisible par 400.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>bissextile, 1900 étant un multiple de 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : être multiple de 4 ne suffit pas, la condition<br/>
exige aussi a % 100 != 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, and et or ne pouvant pas se mélanger</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python accepte le mélange ; and est évalué avant<br/>
or.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>bissextile, la dernière condition l'emportant toujours</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : a % 400 == 0 est faux pour 1900.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>non bissextile, 1900 étant divisible par 100 mais pas par 400</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : a % 4 == 0 and a % 100 != 0 est faux car<br/>
1900 est multiple de 100, et a % 400 == 0 est faux<br/>
aussi.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q39 : Les valeurs parcourues par range</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelles valeurs prend i dans la boucle for i in range(2, 7): ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>range(a, b) parcourt les entiers de a inclus à b exclu.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0, 1, 2, 3, 4, 5 et 6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le premier argument fixe le départ à 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2, 3, 4, 5, 6 et 7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la borne de fin est exclue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1, 2, 3, 4, 5, 6 et 7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la boucle commence à 2 et exclut 7.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>2, 3, 4, 5 et 6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : range(2, 7) part de 2 et s'arrête avant<br/>
7.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q40 : Un produit calculé par une boucle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
p = 1<br/>
for i in range(1, 5):<br/>
    p = p * i<br/>
print(p)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un accumulateur initialisé à 1 et multiplié à chaque tour<br/>
calcule un produit.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>120, le produit des entiers de 1 à 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 5 est exclu de range(1, 5).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10, la somme des entiers de 1 à 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'instruction multiplie, elle n'additionne pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4, la dernière valeur de i</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche p, pas i.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>24, le produit des entiers de 1 à 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : range(1, 5) s'arrête à 4 et p est<br/>
multiplié par chaque entier rencontré.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q41 : Compter avec un test de divisibilité</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
c = 0<br/>
for i in range(1, 21):<br/>
    if i % 3 == 0:<br/>
        c = c + 1<br/>
print(c)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un compteur placé sous un test ne compte que les valeurs qui<br/>
vérifient la condition.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>6, les multiples de 3 jusqu'à 20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : c augmente de 1 à chaque fois que i est<br/>
divisible par 3, soit 6 fois jusqu'à 20.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>20, le nombre total de tours de boucle</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c ne compte que les tours où le test est vrai.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7, en comptant aussi 21 comme multiple</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : range(1, 21) s'arrête à 20.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3, le diviseur utilisé dans le test</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche le compteur, pas le diviseur.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q42 : Somme des premiers entiers jusqu'à un seuil</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
s = 0<br/>
n = 0<br/>
while s &lt;= 20:<br/>
    n = n + 1<br/>
    s = s + n<br/>
print(n)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une boucle while répète tant que la condition est vraie : elle<br/>
s'arrête au premier n pour lequel la somme dépasse le seuil.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>6, premier rang où la somme dépasse 20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la boucle ajoute 1, puis 2, puis 3, et<br/>
s'arrête dès que s dépasse 20 ; cela se produit pour<br/>
n = 6, avec s égal à 21.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>21, la valeur finale de la somme s</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche n, pas s.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>20, le seuil comparé à la somme</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 20 est la valeur comparée, pas le nombre de tours.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5, dernier rang où la somme reste sous 20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pour n = 5, s est encore inférieur ou égal à<br/>
20 et la boucle fait un tour de plus.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q43 : Une fonction qui oublie de renvoyer</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
``python<br/>
def double(x):<br/>
    y = 2 * x</p>
<p>r = double(5)<br/>
print(r)<br/>
``</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour qu'un appel produise une valeur, la fonction doit se terminer<br/>
par return.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10, la valeur calculée dans la fonction</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : y est calculé mais jamais renvoyé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5, l'argument passé à la fonction</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la fonction ne renvoie pas son argument.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>None, la fonction ne renvoyant rien</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : sans return, l'appel double(5) vaut<br/>
None, même si y a été calculé à l'intérieur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, y n'existant pas en dehors de la fonction</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme n'utilise pas y à l'extérieur ; il<br/>
affiche r, qui vaut None.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q44 : Deux appels d'une fonction à condition</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
``python<br/>
def tarif(age):<br/>
    if age &lt; 12:<br/>
        return 5<br/>
    else:<br/>
        return 8</p>
<p>print(tarif(10) + tarif(15))<br/>
``</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Chaque appel est évalué séparément avec son argument, puis les<br/>
deux valeurs renvoyées sont additionnées.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5 8, les deux tarifs l'un après l'autre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : print reçoit la somme des deux valeurs renvoyées.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>16, soit 8 + 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 10 est strictement inférieur à 12.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10, soit 5 + 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 15 n'est pas strictement inférieur à 12.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>13, soit 5 + 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : tarif(10) renvoie 5 car 10 &lt; 12, et<br/>
tarif(15) renvoie 8.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q45 : Une fonction qui en appelle une autre</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
``python<br/>
def carre(x):<br/>
    return x * x</p>
<p>def somme_carres(a, b):<br/>
    return carre(a) + carre(b)</p>
<p>print(somme_carres(3, 4))<br/>
``</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une fonction peut en appeler une autre ; chaque appel renvoie une<br/>
valeur utilisée dans le calcul.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>49, soit (3 + 4)²</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque nombre est élevé au carré avant l'addition.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>25, soit 3² + 4²</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : somme_carres appelle carre deux fois et<br/>
additionne les valeurs renvoyées.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>12, le produit 3 × 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucun produit de a par b n'est calculé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7, la somme 3 + 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : carre est bien appliquée à chaque argument.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
