<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de NSI/Première/Diversité des langages</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>Constructions élémentaires communes aux langages de<br/>
programmation, traits communs et particuliers d'un<br/>
langage inconnu (blocs, types, indices, opérateurs),<br/>
styles de programmation, langages de description et<br/>
de requêtes.</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q01 : Les constructions élémentaires</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle liste réunit uniquement des <strong>constructions<br/>
élémentaires</strong> présentes dans presque tous les langages de<br/>
programmation ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un algorithme s'écrit avec quelques constructions : la<br/>
séquence, l'affectation, la conditionnelle, les boucles et<br/>
l'appel de fonction. Les retrouver dans un langage inconnu<br/>
suffit souvent pour lire ses programmes.</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>Balise, attribut, sélecteur, propriété de style</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce vocabulaire est celui de HTML et de CSS,<br/>
langages de description qui ne programment pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Affectation, conditionnelle, boucle, appel de fonction</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : séquence, affectation, conditionnelle,<br/>
boucles bornée et non bornée, appel de fonction forment le<br/>
socle commun aux langages.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Liste, dictionnaire, tuple, chaîne de caractères</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce sont des <strong>types de données</strong>, et leurs noms<br/>
changent d'un langage à l'autre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Compilation, interprétation, test, débogage</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce sont des étapes de la vie d'un programme, pas<br/>
des constructions qu'on écrit dans le code.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q02 : Répéter sans connaître le nombre de tours</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle construction répète un bloc d'instructions <strong>tant<br/>
qu'une condition reste vraie</strong>, sans connaître à l'avance le<br/>
nombre de tours ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les deux boucles existent dans presque tous les langages :<br/>
for en C, en JavaScript ou en Python, while dans les<br/>
trois aussi, « répéter » et « tant que » en pseudo-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="0" format="html">
    <text><![CDATA[<p>La boucle bornée, comme for i in range(n)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une boucle bornée fait un nombre de tours connu<br/>
dès son début.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La séquence, qui enchaîne des lignes dans l'ordre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la séquence exécute chaque instruction une seule<br/>
fois, de haut en bas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>L'instruction conditionnelle, comme if condition</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : if exécute son bloc <strong>au plus une fois</strong>, il ne<br/>
répète rien.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>La boucle non bornée, comme while condition</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la boucle non bornée (while en Python,<br/>
« tant que » en pseudo-code) teste sa condition avant<br/>
chaque tour.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q03 : Une boucle écrite en pseudo-code</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un logiciel de dessin pour débutants accepte ce programme :</p>
<p>`<code>text<br/>
répéter 4 fois<br/>
    avancer de 10<br/>
    tourner de 90 degrés<br/>
</code>`</p>
<p>Quelle ligne Python ouvre la boucle équivalente ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les mots changent (« répéter », for, repeat), la<br/>
construction reste la même : une boucle bornée dont le<br/>
nombre de tours est connu avant de commencer.</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>if i &lt; 4:</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une conditionnelle exécute son bloc au plus une<br/>
fois, le carré ne serait pas tracé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>def repeter(i):</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette ligne définit une fonction, elle ne répète<br/>
rien tant qu'on ne l'appelle pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>for i in range(90):</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 90 est l'angle de chaque virage, pas le nombre<br/>
de tours de la boucle.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>for i in range(4):</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : « répéter 4 fois » est une boucle<br/>
<strong>bornée</strong> de quatre tours.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q04 : Un produit calculé en JavaScript</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que vaut produit après l'exécution de ce code JavaScript ?</p>
<p>`<code>javascript<br/>
let produit = 1;<br/>
let i = 1;<br/>
while (i &lt;= 3) {<br/>
  produit = produit * i;<br/>
  i = i + 1;<br/>
}<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La boucle while de JavaScript s'écrit comme en Python, à<br/>
deux différences près : la condition entre parenthèses et le<br/>
corps entre accolades. Ici, elle équivaut à<br/>
while i &lt;= 3: en 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>24</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le produit de 1 à 4 ; la boucle<br/>
s'arrête dès que i dépasse 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le produit de 1 à 2, comme si la<br/>
condition était i &lt; 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 3 est le nombre de tours, pas le produit<br/>
accumulé dans produit.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : i prend les valeurs 1 à 3 (la<br/>
condition i &lt;= 3 inclut 3), et le produit vaut 6.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q05 : Trois écritures de l'affectation</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On rencontre x = 5 en Python, x ← 5 en pseudo-code et<br/>
x := 5 en Pascal. Que font ces trois instructions ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le symbole change d'un langage à l'autre (=, ←, :=),<br/>
la construction reste l'affectation. La flèche du<br/>
pseudo-code évite de la confondre avec l'égalité<br/>
mathématique.</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>Elles déclarent une constante x non modifiable</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : après une affectation, x peut recevoir une autre<br/>
valeur plus loin dans le programme.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elles testent si la variable x vaut 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le test d'égalité s'écrit x == 5 en Python ;<br/>
aucune de ces écritures ne compare.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elles affichent la valeur 5 à l'écran</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'affichage passe par une fonction comme<br/>
print, pas par une affectation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Elles donnent la valeur 5 à la variable x</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : ce sont trois notations de la même<br/>
construction, l'<strong>affectation</strong>.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q06 : Traduire une fonction écrite en C</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Voici une fonction écrite en langage C :</p>
<p>`<code>c<br/>
int carre(int n) {<br/>
    return n * n;<br/>
}<br/>
</code>`</p>
<p>Quelle fonction Python fait la même chose ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>En C, on écrit le type renvoyé (int) et le type de chaque<br/>
paramètre ; les accolades délimitent le corps. Python ne<br/>
déclare pas les types et délimite le corps par<br/>
l'indentation.</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>def carre(n): return n * n</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : même nom, même paramètre, même valeur<br/>
renvoyée ; seuls les types déclarés et les accolades<br/>
disparaissent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>def carre(int n): return n * n</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en Python, on n'écrit pas le type devant le<br/>
paramètre ; cette ligne déclenche une SyntaxError.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>def carre(n): print(n * n)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette fonction affiche le carré mais renvoie<br/>
None ; la fonction C <strong>renvoie</strong> une valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>carre = n * n</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est une affectation, qui échoue d'ailleurs si<br/>
n n'existe pas ; elle ne définit aucune fonction.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q07 : Un algorithme, plusieurs langages</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un algorithme de tri écrit en Python peut être réécrit en<br/>
C, en JavaScript ou en Java. Pourquoi ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un algorithme ne dépend pas du langage : il repose sur des<br/>
constructions élémentaires que tous les langages<br/>
généralistes proposent, chacun avec sa syntaxe.</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>Ces langages sont traduits en Python avant de s'exécuter</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque langage a son propre interpréteur ou<br/>
compilateur ; aucun ne passe par Python.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Ces langages ont la même syntaxe, à l'indentation près</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la syntaxe diffère beaucoup (accolades, types<br/>
déclarés, points-virgules) ; ce qui est commun, ce sont<br/>
les constructions.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le tri y est une fonction prédéfinie et toujours la même</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on parle ici de réécrire l'algorithme, pas<br/>
d'appeler une fonction de tri fournie par le langage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Ces langages offrent les mêmes constructions de base</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : affectation, conditionnelle, boucles et<br/>
fonctions suffisent à écrire le tri, et chacun de ces<br/>
langages les possède.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q08 : Délimiter un bloc en JavaScript</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>javascript<br/>
if (note &gt;= 10) {<br/>
  resultat = "admis";<br/>
  compteur = compteur + 1;<br/>
}<br/>
</code>`</p>
<p>En JavaScript, qu'est-ce qui délimite le bloc exécuté quand<br/>
la condition est vraie ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Python est l'un des rares langages où l'indentation est<br/>
obligatoire et porte le sens : c'est un trait particulier.<br/>
La plupart des langages utilisent des accolades ou des mots<br/>
comme begin et end.</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 parenthèses qui entourent la condition</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les parenthèses entourent la condition<br/>
note &gt;= 10, pas les instructions du bloc.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les points-virgules en fin de ligne</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le point-virgule termine une instruction, il ne<br/>
délimite pas un bloc.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>L'indentation des lignes, comme en Python</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en JavaScript, l'indentation ne sert qu'à la<br/>
lisibilité ; on pourrait tout écrire sur une ligne.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Les accolades { et } autour des instructions</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : C, Java et JavaScript délimitent les<br/>
blocs par des accolades.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q09 : Le type déclaré en C</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En langage C, on écrit int n = 5;. Que précise le mot<br/>
int ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Python déduit le type de la valeur affectée et laisse une<br/>
variable changer de type ; C impose de le déclarer. Ce<br/>
trait particulier se repère vite en lisant un 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>La valeur initiale donnée à la variable n</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la valeur initiale est 5, écrite après le signe<br/>
=.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Que la variable n sera affichée à l'écran</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'affichage demande un appel de fonction, comme<br/>
printf en C.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Le type de la variable n, ici un entier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : en C, chaque variable est déclarée avec<br/>
son type, qui ne change plus ensuite.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Que la variable n ne pourra plus changer de valeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : n peut recevoir d'autres entiers ; seul son type<br/>
est fixé.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q10 : Un trait particulier à Python</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Parmi ces caractéristiques, laquelle est <strong>particulière</strong> à<br/>
Python, et non commune à la plupart des langages ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Lire un nouveau langage, c'est trier ses traits communs<br/>
(constructions élémentaires) et ses traits particuliers<br/>
(syntaxe des blocs, déclaration des types, opérateurs).</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>L'indentation obligatoire délimite les blocs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la plupart des langages utilisent des<br/>
accolades ; en Python, l'indentation fait partie de la<br/>
syntaxe.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les variables reçoivent leurs valeurs par affectation</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'affectation existe dans tous les langages<br/>
impératifs, sous des notations variées.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une fonction peut renvoyer une valeur à l'appelant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : return existe en C, en Java, en JavaScript et<br/>
dans bien d'autres langages.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une boucle peut répéter un bloc d'instructions</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les boucles font partie des constructions<br/>
communes à tous les langages généralistes.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q11 : Le premier indice d'un tableau</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Dans le langage Lua, le premier élément d'un tableau t<br/>
s'écrit t[1]. Que faut-il en retenir ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le premier indice est un trait particulier fréquent : en<br/>
traduisant un programme, il faut décaler les indices de un<br/>
quand les deux langages ne suivent pas la même convention.</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 Python aussi, le premier élément s'écrit t[1]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en Python, le premier élément s'écrit t[0].</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>En Lua, t[1] désigne le deuxième élément du tableau</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'énoncé dit le contraire, t[1] y est le<br/>
<strong>premier</strong> élément.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Lua numérote les cases en partant de la dernière</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Lua numérote du début, mais en commençant à 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>La numérotation des indices dépend du langage</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : Python, C et JavaScript comptent à partir<br/>
de 0, Lua et R à partir de 1.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q12 : Égalité et affectation en Pascal</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En Pascal, a := 3 affecte la valeur 3 à a, et a = 3<br/>
<strong>teste</strong> si a vaut 3. Quelle écriture Python correspond<br/>
à ce test ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le même symbole = affecte en Python et compare en Pascal :<br/>
avant de lire un programme, repérer les symboles<br/>
d'affectation et de comparaison du langage évite les<br/>
contresens.</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>a == 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : en Python, le test d'égalité s'écrit avec<br/>
deux signes =.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>a != 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : != teste la <strong>différence</strong>, le contraire de ce<br/>
qu'on cherche.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>a === 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette écriture est celle de JavaScript ; elle est<br/>
invalide en Python.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>a = 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en Python, a = 3 est une affectation, comme<br/>
a := 3 en Pascal.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q13 : La division de deux entiers en C</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>En langage C, quand a et b sont deux variables de type<br/>
int, l'expression a / b donne le <strong>quotient entier</strong> :<br/>
avec a = 7 et b = 2, elle vaut 3. Quelle expression<br/>
Python donne ce même résultat ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un même symbole peut changer de sens d'un langage à<br/>
l'autre : / divise en entiers en C quand les deux termes<br/>
sont entiers, alors qu'en Python il donne un 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="0" format="html">
    <text><![CDATA[<p>a % b</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : % donne le <strong>reste</strong> de la division, ici 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>a // b</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : // donne le quotient de la division<br/>
entière, 7 // 2 vaut 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>round(a / b)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : round(3.5) vaut 4 ; arrondir n'est pas<br/>
prendre le quotient entier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>a / b</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en Python, / donne toujours un flottant : 7 / 2<br/>
vaut 3.5.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q14 : Afficher en JavaScript</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle instruction JavaScript joue le rôle de print(x) en<br/>
Python, en affichant x dans la console ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Tous les langages savent afficher une valeur, mais chacun a<br/>
son instruction : print en Python, console.log en<br/>
JavaScript, printf en C, System.out.println en Java.</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>console.log(x) du navigateur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : console.log écrit dans la console du<br/>
navigateur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>System.out.println(x)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'instruction d'affichage de Java, un autre<br/>
langage malgré la ressemblance des noms.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>echo x, comme dans le shell</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : echo est une commande du shell, pas une<br/>
instruction JavaScript.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>print(x), comme en Python</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : print n'existe pas en JavaScript ; le nom de la<br/>
fonction d'affichage change d'un langage à l'autre.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q15 : Traduire une boucle de C en Python</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle boucle Python parcourt les mêmes valeurs de i que<br/>
cette boucle écrite en C ?</p>
<p>`<code>c<br/>
for (int i = 0; i &lt; 5; i = i + 2) {<br/>
    printf("%d\n", i);<br/>
}<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La boucle for de C réunit l'initialisation, la condition<br/>
et le pas ; range(début, fin, pas) les reprend dans le<br/>
même ordre, la fin étant exclue comme avec i &lt; fin.</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>for i in range(0, 5, 2):</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : début 0, arrêt avant 5 (condition<br/>
i &lt; 5), pas de 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>for i in range(0, 2, 5):</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'ordre des arguments de range est début,<br/>
fin, pas ; ici la fin et le pas sont inversés.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>for i in range(2, 5):</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le pas 2 a été pris pour la valeur de départ,<br/>
qui est 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>for i in range(0, 5):</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans troisième argument, range avance de 1 ;<br/>
la boucle C avance de 2.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q16 : HTML, un langage de description</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi HTML n'est-il <strong>pas</strong> un langage de programmation ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>HTML et CSS sont des langages de <strong>description</strong> : ils<br/>
disent ce qu'il faut afficher et comment, sans décrire de<br/>
calcul. Les calculs d'une page Web sont confiés à<br/>
JavaScript.</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>Il est interprété par le navigateur, sans compilation</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python aussi est interprété, et c'est bien un<br/>
langage de programmation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Il décrit la structure d'une page sans rien calculer</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : HTML n'a ni variables, ni conditions, ni<br/>
boucles ; il décrit un contenu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il ne permet pas d'afficher du texte mis en forme</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : HTML structure justement du texte (titres,<br/>
listes, liens) que le navigateur affiche.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il n'est compris que par un seul navigateur du marché</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : tous les navigateurs lisent HTML, qui est un<br/>
standard du Web.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q17 : Reconnaître un langage de requêtes</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>À quelle famille appartient le texte suivant ?</p>
<p>`<code>sql<br/>
SELECT nom FROM eleves WHERE age &gt; 16;<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>SQL, étudié en terminale, est un langage de requêtes : on<br/>
y décrit le résultat attendu (les noms des élèves de plus<br/>
de 16 ans), et le système trouve seul comment le calculer.</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 langage de mise en forme, comme CSS</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : CSS fixe l'apparence d'une page ; ce texte<br/>
interroge une table de données.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un langage de requêtes sur des données</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : SQL décrit les données qu'on veut obtenir,<br/>
sans dire comment les parcourir.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un langage machine exécuté par le processeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le langage machine est une suite de codes<br/>
binaires, pas de mots anglais.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un langage de description de pages Web</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une page Web se décrit en HTML, avec des<br/>
balises.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q18 : Le style événementiel</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>javascript<br/>
bouton.addEventListener("click", saluer);<br/>
</code>`</p>
<p>Quel style de programmation ce code illustre-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>En programmation événementielle, l'ordre d'exécution dépend<br/>
des actions de l'utilisateur (clic, frappe au clavier) : on<br/>
associe à chaque événement la fonction qui le traite.</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>Séquentiel : saluer s'exécute dès le chargement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : saluer n'est pas appelée ici ; elle est<br/>
seulement associée au clic.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Événementiel : saluer s'exécute à chaque clic</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le programme attend une action de<br/>
l'utilisateur et y réagit en appelant la fonction.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Récursif : saluer s'appelle elle-même</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : rien n'indique que saluer s'appelle ; la ligne<br/>
relie une fonction à un événement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Logique : le programme déduit des règles</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la programmation logique énonce des faits et<br/>
des règles, sans bouton ni clic.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q19 : Le style impératif</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un programme enchaîne des instructions qui <strong>modifient pas à<br/>
pas</strong> les valeurs des variables, par exemple<br/>
total = total + x dans une boucle. Quel style de<br/>
programmation est-ce ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le style impératif décrit <strong>comment</strong> calculer : une suite<br/>
d'instructions qui changent l'état du programme. C,<br/>
Python et JavaScript permettent tous ce style.</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>Le style impératif, fait d'ordres successifs</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les programmes Python vus en classe<br/>
sont surtout écrits dans ce style.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le style de description, comme celui de HTML</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : HTML ne contient ni variables ni boucles.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le style événementiel, piloté par des clics</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : rien ici ne dépend d'une action de<br/>
l'utilisateur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le style logique, fait de faits et de règles</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un programme logique ne modifie pas de<br/>
variables pas à pas.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q20 : Le style fonctionnel</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'est-ce qu'un programme écrit dans le style<br/>
<strong>fonctionnel</strong> privilégie ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un même langage permet souvent plusieurs styles : Python<br/>
autorise le style impératif, le style fonctionnel et le<br/>
style objet. Certains langages, comme Haskell, sont conçus<br/>
pour le style fonctionnel.</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>Des événements déclenchés par l'utilisateur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est le style événementiel, celui des pages<br/>
Web interactives.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Des fonctions qui ne modifient aucune variable</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on compose des fonctions qui renvoient<br/>
de nouvelles valeurs au lieu de modifier les anciennes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Des boucles qui modifient un compteur à chaque tour</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : modifier un compteur relève du style impératif.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Des objets qui regroupent données et méthodes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la définition du style objet, vu en<br/>
terminale.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>Diversité des langages — Q21 : Pourquoi tant de langages</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi existe-t-il de nombreux langages de programmation ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Tous les langages généralistes permettent d'écrire les mêmes<br/>
algorithmes ; ils se distinguent par leur syntaxe, leurs<br/>
styles et leurs domaines d'usage.</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>Chacun résout des problèmes que les autres ne savent pas</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les langages généralistes calculent tous les<br/>
mêmes choses ; ils diffèrent par la commodité.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Chaque processeur n'accepte qu'un seul de ces langages</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le processeur n'exécute que son langage machine ;<br/>
les autres langages y sont traduits.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Chacun facilite certains usages ou certains styles</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : C pour les systèmes, JavaScript pour le<br/>
Web, Python pour le calcul et l'enseignement, etc.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les anciens langages ne peuvent plus être exécutés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : C (1972) ou Fortran (1957) sont encore utilisés<br/>
aujourd'hui.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
