<?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 <code>a = "12"</code>, quel est le type de la variable <code>a</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>En Python, le type se lit sur l'écriture de la valeur : <code>12</code> est un<br/>
entier (<code>int</code>), <code>12.0</code> un flottant (<code>float</code>), <code>"12"</code> une chaîne de<br/>
caractères (<code>str</code>).</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>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, <code>a = 12</code> serait bien un entier.<br/>
Les guillemets transforment la valeur en texte.</p>]]></text>
    </feedback>
  </answer>
  <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 <code>12.0</code>, 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 <code>True</code> et <code>False</code>.</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 <code>m = 7 / 2</code>, quel est le type de <code>m</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>7 / 2</code> vaut <code>3.5</code> (flottant), <code>7 // 2</code> vaut <code>3</code> (quotient entier)<br/>
et <code>7 % 2</code> vaut <code>1</code> (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="100" format="html">
    <text><![CDATA[<p>Un flottant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'opérateur <code>/</code> renvoie toujours un flottant.<br/>
Ici <code>m</code> vaut <code>3.5</code>.</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 <code>8 / 2</code> donne <code>4.0</code>, un flottant. Le quotient<br/>
entier s'obtient avec <code>//</code>.</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>Cela dépend des valeurs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec <code>/</code>, le résultat est un flottant quelles que<br/>
soient les valeurs, même lorsque la division tombe juste.</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 <code>x</code> après l'exécution de ces instructions ?</p>
<pre><code>x = 5
x = x + 3
x = 2 * x</code></pre>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation <code>x = expression</code> calcule d'abord l'expression avec<br/>
la valeur actuelle de <code>x</code>, puis range le résultat dans <code>x</code>. 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="100" format="html">
    <text><![CDATA[<p>$16$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>x</code> 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>$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>
  <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 <code>x</code> avant<br/>
le doublement.</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 <code>x</code> est<br/>
encore doublée.</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 <code>a</code> et <code>b</code>. 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="100" format="html">
    <text><![CDATA[<p><code>c = a</code>, puis <code>a = b</code>, puis <code>b = c</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la variable <code>c</code> garde une copie de l'ancienne<br/>
valeur de <code>a</code> avant qu'elle soit écrasée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>a = b</code>, puis <code>b = a</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : après <code>a = b</code>, l'ancienne valeur de <code>a</code> est perdue.<br/>
Les deux variables finissent avec la valeur de <code>b</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>b = a</code>, puis <code>a = b</code></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 <code>a</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>c = a</code>, puis <code>b = c</code>, puis <code>a = b</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>b</code> reçoit l'ancienne valeur de <code>a</code>, puis <code>a</code> reçoit<br/>
cette même valeur. L'ancienne valeur de <code>b</code> 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 <code>r</code> et la hauteur <code>h</code> d'un cylindre. Quelle<br/>
instruction range son volume $V = \pi r^2 h$ dans la variable <code>V</code> ?<br/>
On suppose que <code>pi</code> contient une valeur approchée de $\pi$.</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation s'écrit <code>variable = expression</code>. Dans l'expression,<br/>
les produits s'écrivent <code><em></code> et les puissances <code></em>*</code>.</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>V = pi <em> r </em><em> 2 </em> h</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>*<em></code> est l'opérateur de puissance, et chaque<br/>
produit s'écrit avec <code></em></code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>V = pi <em> r ^ 2 </em> h</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en Python, <code>^</code> n'est pas la puissance. La puissance<br/>
s'écrit <code>**</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>V = pi r² h</code></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><code>pi <em> r </em><em> 2 </em> h = V</code></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>
</question>

<question type="multichoice">
  <name>
    <text>Algorithmique et programmation — Q06 : Additionner une saisie</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un programme contient <code>n = input("Nombre ? ")</code>. L'utilisateur tape<br/>
<code>5</code>. Pourquoi l'instruction <code>n + 1</code> provoque-t-elle une erreur ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>input</code> renvoie une chaîne de caractères. Pour calculer, on la<br/>
convertit avec <code>int</code> (entier) ou <code>float</code> (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><code>n</code> contient le texte <code>"5"</code>, pas un nombre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>input</code> renvoie toujours du texte. On écrit<br/>
<code>n = int(input("Nombre ? "))</code> pour obtenir un entier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>n</code> contient le flottant <code>5.0</code>, incompatible avec <code>1</code></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><code>n</code> 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 <code>n</code>, mais sous forme de<br/>
texte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le nombre <code>1</code> doit s'écrire <code>1.0</code></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 <code>17 // 5</code> et <code>17 % 5</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Division euclidienne : <code>a // b</code> est le quotient entier et <code>a % b</code><br/>
le reste, avec <code>a == b * (a // b) + a % b</code>.</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 \times 3 + 2$ avec<br/>
$0 \leq 2 &lt; 5$ : <code>//</code> donne le quotient, <code>%</code> le reste.</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. <code>//</code> donne le quotient<br/>
entier, <code>%</code> donne 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 : <code>%</code> 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>
</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 \leftarrow u + 3$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La flèche $\leftarrow$ note l'affectation dans un algorithme en<br/>
langage naturel ; elle correspond au signe <code>=</code> 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="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>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="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 \leftarrow 3$. Ici, on ajoute $3$ à la<br/>
valeur déjà présente.</p>]]></text>
    </feedback>
  </answer>
  <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>
</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>
<pre><code>x = 7
if x &gt; 5:
    y = 2 * x
else:
    y = x + 1
print(y)</code></pre>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Avec <code>if … else</code>, exactement un bloc s'exécute : celui du <code>if</code> si la<br/>
condition est vraie, celui du <code>else</code> 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="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>
  <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/>
<code>x &gt; 5</code> 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 <code>y</code>, qui a été calculé à partir<br/>
de <code>x</code>, pas <code>x</code> lui-même.</p>]]></text>
    </feedback>
  </answer>
  <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>
</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 <code>n</code> vaut $0$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Comparaisons en Python : <code>==</code> (égal), <code>!=</code> (différent), <code>&lt;</code>, <code>&lt;=</code>,<br/>
<code>&gt;</code>, <code>&gt;=</code>. Le signe <code>=</code> 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><code>n == 0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le double signe <code>==</code> compare deux valeurs et<br/>
donne <code>True</code> ou <code>False</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>n = 0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un seul signe <code>=</code> est une affectation. Il range $0$<br/>
dans <code>n</code> au lieu de le comparer.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>n =&gt; 0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette écriture n'existe pas en Python. « Supérieur ou<br/>
égal » s'écrit <code>&gt;=</code>, et ce n'est pas un test d'égalité.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>n != 0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>!=</code> teste la <strong>différence</strong>. Cette condition est vraie<br/>
quand <code>n</code> ne vaut pas $0$.</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 <code>n</code> est<br/>
pair ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'entier $n$ est multiple de $d$ lorsque <code>n % d == 0</code>. 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><code>n % 2 == 0</code></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><code>n / 2 == 0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>n / 2</code> vaut $0$ seulement si <code>n</code> vaut $0$. C'est le<br/>
reste qu'il faut tester.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>n // 2 == 0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le quotient entier <code>n // 2</code> vaut $0$ pour $n = 0$ ou<br/>
$n = 1$ seulement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>n % 2 == 1</code></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>
</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>
<pre><code>note = 14
if note &gt;= 16:
    print("TB")
elif note &gt;= 12:
    print("B")
else:
    print("P")</code></pre>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>if … elif … else</code> 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="100" format="html">
    <text><![CDATA[<p><code>B</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : $14 \geq 16$ est faux, $14 \geq 12$ est vrai :<br/>
le bloc du <code>elif</code> s'exécute, puis le test s'arrête.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>TB</code></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><code>B</code> puis <code>P</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : dès qu'une condition est vraie, les blocs suivants sont<br/>
ignorés. Le <code>else</code> ne s'exécute pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>P</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le <code>else</code> ne s'exécute que si toutes les conditions<br/>
précédentes sont fausses, or $14 \geq 12$.</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 <code>x</code><br/>
appartient à l'intervalle $[2\,;\,5[$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>$x \in [a\,;\,b[$ se traduit par <code>x &gt;= a and x &lt; b</code> : 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><code>x &gt;= 2 and x &lt; 5</code></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ù <code>and</code>. La borne $2$ est incluse, la borne $5$<br/>
exclue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>x &gt;= 2 or x &lt; 5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec <code>or</code>, une seule inégalité suffit. Tout réel<br/>
vérifie alors la condition, par exemple $x = 100$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>x &gt; 2 and x &lt;= 5</code></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><code>x &gt;= 2 and x &lt;= 5</code></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>
</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 <code>True</code> 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>
<pre><code>def alignes(xA, yA, xB, yB, xC, yC):
    m1 = (yB - yA) / (xB - xA)
    m2 = (yC - yA) / (xC - xA)
    return ...</code></pre>]]></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="100" format="html">
    <text><![CDATA[<p><code>m1 == m2</code></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><code>m1 * m2 == -1</code></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="0" format="html">
    <text><![CDATA[<p><code>m1 + m2 == 0</code></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>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>m1 == 0 and m2 == 0</code></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>
</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 <code>for i in range(10):</code><br/>
est-il exécuté ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>range(n)</code> produit les entiers de $0$ à $n - 1$, soit $n$ valeurs ;<br/>
<code>range(a, b)</code> 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="100" format="html">
    <text><![CDATA[<p>$10$ fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>i</code> prend les valeurs $0$, $1$, …, $9$, soit<br/>
$10$ valeurs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$9$ fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>range(10)</code> 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 <code>i</code><br/>
est $9$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Tant que <code>i</code> est inférieur à $10$, sans fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une boucle <code>for</code> sur <code>range</code> est bornée : son nombre de<br/>
tours est connu à l'avance.</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>
<pre><code>s = 0
for k in range(1, 5 + 1):
    s = s + k
print(s)</code></pre>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Motif de l'accumulateur : initialiser <code>s = 0</code> avant la boucle, puis<br/>
ajouter à chaque tour. <code>range(1, n + 1)</code> 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 + \cdots + 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 <code>5 + 1</code> 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>$21$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la valeur $5 + 1$ n'est jamais prise par <code>k</code>, car la<br/>
borne de droite de <code>range</code> est exclue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>$5$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>s</code> accumule les valeurs successives de <code>k</code>, elle ne<br/>
garde pas seulement la dernière.</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>
<pre><code>n = 1
while n &lt; 50:
    n = 3 * n
print(n)</code></pre>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une boucle <code>while</code> répète son corps tant que la condition est vraie.<br/>
À la sortie, la condition est fausse : ici, <code>n</code> 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="100" format="html">
    <text><![CDATA[<p>$81$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>n</code> 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 <code>n</code> devient $81$.</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 <code>n</code> ne prend que<br/>
des puissances de $3$.</p>]]></text>
    </feedback>
  </answer>
  <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 : <code>n</code> augmente à chaque tour et finit par dépasser $50$ :<br/>
la condition devient fausse.</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 (<code>for</code>) : le nombre de répétitions est connu à<br/>
l'avance. Boucle non bornée (<code>while</code>) : 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="100" format="html">
    <text><![CDATA[<p>Une boucle <code>while</code>, 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 <code>for</code>, 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>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une boucle <code>for i in range(1500)</code></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>
</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>
<pre><code>c = 1000
n = 0
while c &lt;= 1500:
    c = c * 1.03
    ...
print(n)</code></pre>]]></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><code>n = n + 1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>n</code> 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><code>n = c</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>n</code> recevrait le montant du capital, pas un nombre<br/>
d'années.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>c = c + 1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le capital est déjà mis à jour à la ligne précédente, et<br/>
<code>n</code> resterait à $0$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>n = 1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>n</code> vaudrait toujours $1$, quel que soit le nombre de<br/>
tours effectués.</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>
<pre><code>x = 10
while x &gt; 0:
    x = x + 2</code></pre>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Avant d'écrire une boucle <code>while</code>, 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="100" format="html">
    <text><![CDATA[<p><code>x</code> augmente, donc <code>x &gt; 0</code> 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 <code>x = x - 2</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une boucle <code>while</code> s'exécute toujours sans fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une boucle <code>while</code> s'arrête dès que sa condition<br/>
devient fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La variable <code>x</code> n'est pas initialisée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la première ligne donne à <code>x</code> la valeur $10$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il manque une instruction <code>print</code></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>
</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>
<pre><code>u = 2
for i in range(3):
    u = 2 * u + 1
print(u)</code></pre>]]></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>$11$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il manque un tour. <code>range(3)</code> fait exactement $3$<br/>
tours.</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. <code>range(3)</code> fait $3$ tours, pas<br/>
$3 + 1$.</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>
</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>
<pre><code>c = 0
for k in range(1, 21):
    if k % 3 == 0 or k % 5 == 0:
        c = c + 1
print(c)</code></pre>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le compteur augmente une fois par valeur de <code>k</code> qui vérifie la<br/>
condition. Une condition avec <code>or</code> 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="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>$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 <code>or</code> demande l'un ou l'autre.</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 <code>range(1, 21)</code><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 <code>f(3)</code> ?</p>
<pre><code>def f(x):
    return x ** 2 - 4</code></pre>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Appeler <code>f(a)</code>, c'est exécuter le corps de la fonction avec le<br/>
paramètre <code>x</code> égal à <code>a</code>. L'instruction <code>return</code> 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="100" format="html">
    <text><![CDATA[<p>$5$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on remplace <code>x</code> 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>$2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>x ** 2</code> est le carré de <code>x</code>, pas son double.</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><code>x ** 2 - 4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'appel <code>f(3)</code> 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 \mapsto 3x - 1$ ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une fonction Python se définit par <code>def nom(paramètre):</code>, suivi d'un<br/>
bloc indenté qui se termine par <code>return valeur</code>.</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[<pre><code>def g(x):
    return 3 * x - 1</code></pre>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'en-tête nomme la fonction et son paramètre, et<br/>
<code>return</code> renvoie l'image.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<pre><code>def g(x):
    print(3x - 1)</code></pre>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>3x</code> n'est pas une écriture valide, et <code>print</code> affiche<br/>
la valeur sans la renvoyer : <code>g(2) + 1</code> échouerait.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<pre><code>def g(x):
    y = 3 * x - 1</code></pre>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la valeur est calculée puis perdue. Sans <code>return</code>, la<br/>
fonction ne renvoie rien d'utilisable.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<pre><code>g(x) = 3 * x - 1</code></pre>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est une écriture mathématique. En Python, une<br/>
fonction se définit avec <code>def</code>.</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 <code>return</code> et <code>print</code> 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 <code>return</code> 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="100" format="html">
    <text><![CDATA[<p><code>return</code> 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. <code>print</code> se contente de<br/>
l'afficher à l'écran.</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 <code>print</code> ne peut pas être<br/>
réutilisée dans un calcul.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>print</code> arrête la fonction, <code>return</code> non</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'inverse. <code>return</code> termine immédiatement la<br/>
fonction.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>return</code> 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>
</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 <code>moyenne(12, 17)</code> ?</p>
<pre><code>def moyenne(a, b):
    return (a + b) / 2</code></pre>]]></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 à <code>a</code>, le second à <code>b</code>.</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>$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>
  <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>
</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 <code>est_diviseur(d, n)</code> qui renvoie <code>True</code> si <code>d</code><br/>
divise l'entier <code>n</code>, et <code>False</code> 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 <code>if</code>.</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[<pre><code>def est_diviseur(d, n):
    return n % d == 0</code></pre>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la comparaison <code>n % d == 0</code> vaut déjà <code>True</code> ou<br/>
<code>False</code>, on la renvoie directement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<pre><code>def est_diviseur(d, n):
    return d % n == 0</code></pre>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les rôles sont inversés. Ce test indique si <code>n</code> divise<br/>
<code>d</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<pre><code>def est_diviseur(d, n):
    return n // d</code></pre>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette fonction renvoie un quotient, pas un booléen.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<pre><code>def est_diviseur(d, n):
    if n % d == 0:
        return True</code></pre>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : si <code>d</code> ne divise pas <code>n</code>, aucune instruction <code>return</code><br/>
n'est exécutée et la fonction ne renvoie pas <code>False</code>.</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 <code>random</code> 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><code>random.randint(a, b)</code> renvoie un entier aléatoire de $a$ à $b$,<br/>
bornes incluses ; <code>random.random()</code> 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[<pre><code>def de():
    return random.randint(1, 6)</code></pre>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>randint(1, 6)</code> 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[<pre><code>def de():
    return random.randint(0, 6)</code></pre>]]></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>
  <answer fraction="0" format="html">
    <text><![CDATA[<pre><code>def de():
    return 6 * random.random()</code></pre>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>random()</code> 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[<pre><code>def de():
    return random.randint(1, 7)</code></pre>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux bornes de <code>randint</code> sont comprises, donc $7$<br/>
pourrait sortir.</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 <code>random</code> est importé. Que renvoie <code>f(1000)</code> ?</p>
<pre><code>def f(n):
    c = 0
    for i in range(n):
        if random.randint(1, 6) == 6:
            c = c + 1
    return c / n</code></pre>]]></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 <code>n</code> 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 : <code>c</code> compte les six obtenus, puis on divise par<br/>
le nombre de lancers. Le résultat est souvent proche de<br/>
$\dfrac{1}{6}$.</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 <code>return c</code>. La division par <code>n</code> transforme<br/>
l'effectif en fréquence.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Exactement $\dfrac{1}{6}$</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 $\dfrac{1}{6}$.</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 <code>c</code> l'est.</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 <code>m</code>. Comment la modifier pour que le taux devienne un<br/>
paramètre <code>t</code> exprimé en pourcentage ?</p>
<pre><code>def annees(m):
    c = 1000
    n = 0
    while c &lt;= m:
        c = c * 1.03
        n = n + 1
    return n</code></pre>]]></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="100" format="html">
    <text><![CDATA[<p>En-tête <code>def annees(m, t):</code>, facteur <code>1 + t / 100</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : une hausse de $t\ \%$ multiplie par<br/>
$1 + \dfrac{t}{100}$. Pour $t = 3$, on retrouve $1{,}03$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>En-tête <code>def annees(m, t):</code> et ligne <code>c = c * t</code></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>En-tête <code>def annees(m, t):</code> et ligne <code>c = c + t</code></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="0" format="html">
    <text><![CDATA[<p>Ligne <code>c = c * (1 + t / 100)</code> sans changer l'en-tête</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>t</code> 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>
</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/>
<pre><code>x = 0
if x &lt; 0:
    print("negatif")
elif x == 0:
    print("nul")
else:
    print("positif")</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une structure <code>if</code>, <code>elif</code>, <code>else</code> 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="100" format="html">
    <text><![CDATA[<p><code>nul</code></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 <code>nul</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>negatif</code></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="0" format="html">
    <text><![CDATA[<p><code>positif</code></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 <code>elif</code> et <code>else</code>, 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/>
<pre><code>a = 7
b = 12
if a &gt; b:
    print(a)
else:
    print(b)</code></pre></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="100" format="html">
    <text><![CDATA[<p><code>12</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le programme affiche <code>a</code> si <code>a &gt; b</code>, sinon <code>b</code> ;<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><code>7</code>, la plus petite</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le test <code>a &gt; b</code> sélectionne la plus grande valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>19</code>, 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><code>7</code> puis <code>12</code></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/>
<pre><code>x = 5
if x &lt; 2 or x &gt; 8:
    print("hors")
else:
    print("dans")</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>« En dehors de $[2 ; 8]$ » se traduit par <code>x &lt; 2 or x &gt; 8</code> ; « dans »<br/>
par <code>2 &lt;= x &lt;= 8</code>.</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>dans</code>, $5$ étant entre $2$ et $8$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la condition <code>x &lt; 2 or x &gt; 8</code> est vraie dès<br/>
qu'une des deux comparaisons l'est ; sinon, <code>x</code> est dans<br/>
$[2 ; 8]$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>hors</code>, $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/>
<code>or</code> vrai suffit à afficher <code>hors</code>.</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 : <code>or</code> sert précisément à combiner deux conditions.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>5</code>, la valeur de <code>x</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche un mot, pas la valeur de <code>x</code>.</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 <code>sqrt(x)</code> 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="100" format="html">
    <text><![CDATA[<p><code>x &gt;= 0</code>, la racine exigeant un nombre positif ou nul</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : $\sqrt{x}$ n'existe que pour $x \geq 0$ ; le<br/>
test protège l'appel de <code>sqrt</code>, qui échouerait pour un nombre<br/>
négatif.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>x &gt; 0</code>, zéro n'ayant pas de racine carrée définie</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $\sqrt{0} = 0$ existe ; exclure zéro est inutile.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>x != 0</code>, 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><code>x &lt;= 0</code>, 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 <code>"3" + "4"</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le même symbole <code>+</code> 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="100" format="html">
    <text><![CDATA[<p><code>'34'</code>, la concaténation des deux chaînes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : entre guillemets, <code>"3"</code> et <code>"4"</code> sont des<br/>
chaînes de caractères ; <code>+</code> les met bout à bout.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>7</code>, la somme des deux entiers</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les guillemets font de <code>"3"</code> et <code>"4"</code> des chaînes,<br/>
pas des entiers ; il faudrait <code>int("3") + int("4")</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>'7'</code>, 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 : <code>+</code> entre deux chaînes est autorisé et les concatène.</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 <code>a</code> à la fin de ce programme ?<br/>
<pre><code>a = 5
a = a + 3
a = a * 2</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Chaque affectation remplace la valeur de <code>a</code> 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="100" format="html">
    <text><![CDATA[<p><code>16</code>, 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 <code>a</code> vaut $8$,<br/>
puis la troisième la multiplie par $2$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>11</code>, 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="0" format="html">
    <text><![CDATA[<p><code>13</code>, 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><code>10</code>, 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 <code>x</code> après l'instruction <code>x = 2 *<em> 3 </em> 2</code> ?</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="100" format="html">
    <text><![CDATA[<p><code>16</code>, la puissance étant calculée avant le produit</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>*<em></code> est prioritaire sur <code></em></code>, donc<br/>
$2^3 \times 2 = 16$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>64</code>, le produit des exposants</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est <code>2 *<em> (3 </em> 2)</code> qui donnerait ce résultat.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>12</code>, les trois nombres multipliés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>**</code> est une puissance, pas une multiplication.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>8</code>, le produit puis la somme</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il n'y a ni somme ni produit $2 \times 3$.</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/>
<pre><code>a = 1900
if a % 4 == 0 and a % 100 != 0 or a % 400 == 0:
    print("bissextile")
else:
    print("non bissextile")</code></pre></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="100" format="html">
    <text><![CDATA[<p><code>non bissextile</code>, $1900$ étant divisible par $100$ mais pas par $400$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>a % 4 == 0 and a % 100 != 0</code> est faux car<br/>
$1900$ est multiple de $100$, et <code>a % 400 == 0</code> est faux<br/>
aussi.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>bissextile</code>, $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 <code>a % 100 != 0</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>bissextile</code>, la dernière condition l'emportant toujours</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>a % 400 == 0</code> est faux pour $1900$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, <code>and</code> et <code>or</code> ne pouvant pas se mélanger</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python accepte le mélange ; <code>and</code> est évalué avant<br/>
<code>or</code>.</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 <code>i</code> dans la boucle <code>for i in range(2, 7):</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>range(a, b)</code> 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="100" format="html">
    <text><![CDATA[<p><code>2</code>, <code>3</code>, <code>4</code>, <code>5</code> et <code>6</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>range(2, 7)</code> part de $2$ et s'arrête avant<br/>
$7$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>2</code>, <code>3</code>, <code>4</code>, <code>5</code>, <code>6</code> et <code>7</code></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><code>1</code>, <code>2</code>, <code>3</code>, <code>4</code>, <code>5</code>, <code>6</code> et <code>7</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la boucle commence à $2$ et exclut $7$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0</code>, <code>1</code>, <code>2</code>, <code>3</code>, <code>4</code>, <code>5</code> et <code>6</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le premier argument fixe le départ à $2$.</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/>
<pre><code>p = 1
for i in range(1, 5):
    p = p * i
print(p)</code></pre></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="100" format="html">
    <text><![CDATA[<p><code>24</code>, le produit des entiers de $1$ à $4$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>range(1, 5)</code> s'arrête à $4$ et <code>p</code> est<br/>
multiplié par chaque entier rencontré.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>120</code>, le produit des entiers de $1$ à $5$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : $5$ est exclu de <code>range(1, 5)</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>10</code>, 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><code>4</code>, la dernière valeur de <code>i</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche <code>p</code>, pas <code>i</code>.</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/>
<pre><code>c = 0
for i in range(1, 21):
    if i % 3 == 0:
        c = c + 1
print(c)</code></pre></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><code>6</code>, les multiples de $3$ jusqu'à $20$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>c</code> augmente de $1$ à chaque fois que <code>i</code> est<br/>
divisible par $3$, soit $6$ fois jusqu'à $20$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>7</code>, en comptant aussi $21$ comme multiple</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>range(1, 21)</code> s'arrête à $20$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>20</code>, le nombre total de tours de boucle</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>c</code> ne compte que les tours où le test est vrai.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3</code>, 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/>
<pre><code>s = 0
n = 0
while s &lt;= 20:
    n = n + 1
    s = s + n
print(n)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une boucle <code>while</code> répète tant que la condition est vraie : elle<br/>
s'arrête au premier <code>n</code> 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><code>6</code>, 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 <code>s</code> dépasse $20$ ; cela se produit pour<br/>
$n = 6$, avec <code>s</code> égal à $21$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>5</code>, dernier rang où la somme reste sous $20$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pour $n = 5$, <code>s</code> est encore inférieur ou égal à<br/>
$20$ et la boucle fait un tour de plus.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>21</code>, la valeur finale de la somme <code>s</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche <code>n</code>, pas <code>s</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>20</code>, 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>
</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/>
<pre><code>def double(x):
    y = 2 * x

r = double(5)
print(r)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour qu'un appel produise une valeur, la fonction doit se terminer<br/>
par <code>return</code>.</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>None</code>, la fonction ne renvoyant rien</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : sans <code>return</code>, l'appel <code>double(5)</code> vaut<br/>
<code>None</code>, même si <code>y</code> a été calculé à l'intérieur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>10</code>, la valeur calculée dans la fonction</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>y</code> est calculé mais jamais renvoyé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, <code>y</code> n'existant pas en dehors de la fonction</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme n'utilise pas <code>y</code> à l'extérieur ; il<br/>
affiche <code>r</code>, qui vaut <code>None</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>5</code>, 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>
</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/>
<pre><code>def tarif(age):
    if age &lt; 12:
        return 5
    else:
        return 8

print(tarif(10) + tarif(15))</code></pre></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="100" format="html">
    <text><![CDATA[<p><code>13</code>, soit $5 + 8$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>tarif(10)</code> renvoie $5$ car $10 &lt; 12$, et<br/>
<code>tarif(15)</code> renvoie $8$.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>10</code>, 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="0" format="html">
    <text><![CDATA[<p><code>16</code>, 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><code>5 8</code>, les deux tarifs l'un après l'autre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>print</code> reçoit la somme des deux valeurs renvoyées.</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/>
<pre><code>def carre(x):
    return x * x

def somme_carres(a, b):
    return carre(a) + carre(b)

print(somme_carres(3, 4))</code></pre></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="100" format="html">
    <text><![CDATA[<p><code>25</code>, soit $3^2 + 4^2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>somme_carres</code> appelle <code>carre</code> deux fois et<br/>
additionne les valeurs renvoyées.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>49</code>, soit $(3 + 4)^2$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque nombre est élevé au carré avant l'addition.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>7</code>, la somme $3 + 4$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>carre</code> est bien appliquée à chaque argument.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>12</code>, le produit $3 \times 4$</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucun produit de <code>a</code> par <code>b</code> n'est calculé.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
