{
  "chapter": {
    "id": "donnees-structurees",
    "level": "snt",
    "theme": "Les données structurées",
    "title": "Les données structurées et leur traitement",
    "description": "Donnée et descripteur, données personnelles, format tableau et fichier\nCSV, lecture d'un tableau de données, tri et recherche par critère,\ncroisement de deux tables, métadonnées d'une photo et d'un courriel,\nstockage dans le nuage et localisation physique des données, cycle de\nvie d'une donnée et données ouvertes.",
    "parties": [
      {
        "id": "descripteurs",
        "title": "Données, descripteurs et formats"
      },
      {
        "id": "traitements",
        "title": "Trier, filtrer, croiser"
      },
      {
        "id": "stockage",
        "title": "Stockage, données ouvertes et vie privée"
      }
    ],
    "prerequisites": [],
    "references": []
  },
  "questions": [
    {
      "id": "q01",
      "difficulty": 1,
      "skills": [
        "definition",
        "descripteur"
      ],
      "title": "Ce qu'est un descripteur",
      "partie": "descripteurs",
      "statement": "Dans un tableau de données, qu'appelle-t-on un descripteur ?",
      "options": [
        {
          "text": "Le numéro qui désigne une ligne du tableau sans\nambiguïté possible",
          "correct": false,
          "feedback": "Erreur : un tel numéro est une valeur parmi d'autres, commode\npour retrouver une ligne. Un descripteur nomme une colonne, il\nne désigne aucune ligne."
        },
        {
          "text": "Le nom d'une caractéristique enregistrée pour chaque\nobjet",
          "correct": true,
          "feedback": "Bonne réponse : les descripteurs sont les intitulés des\ncolonnes. Chaque objet du tableau reçoit une valeur pour\nchacun d'eux."
        },
        {
          "text": "Le texte qui explique l'origine du tableau et la\nfaçon de le lire",
          "correct": false,
          "feedback": "Erreur : cette présentation accompagne parfois un jeu de\ndonnées, mais elle reste extérieure au tableau. Les\ndescripteurs en sont les colonnes."
        },
        {
          "text": "La valeur inscrite dans la première case de chaque\nligne",
          "correct": false,
          "feedback": "Erreur : cette valeur est une donnée comme les autres, souvent\nun nom. Le descripteur est l'intitulé de la colonne où elle\nfigure."
        }
      ],
      "explanation": "Un tableau de données décrit un ensemble d'objets de même nature.\nChaque ligne est un objet, chaque colonne un descripteur, chaque case\nla valeur que prend ce descripteur pour cet objet."
    },
    {
      "id": "q02",
      "difficulty": 1,
      "skills": [
        "tableau",
        "donnee"
      ],
      "title": "Ce que représente une ligne",
      "partie": "descripteurs",
      "statement": "Le professeur de musique tient le tableau suivant.\n\n```csv\nprenom;instrument;niveau\nAbel;piano;2\nNorah;violon;1\nTarek;piano;3\n```\n\nQue représente la ligne `Norah;violon;1` ?",
      "options": [
        {
          "text": "Le nom des descripteurs, que les autres lignes du\ntableau renseignent",
          "correct": false,
          "feedback": "Erreur : ce rôle est tenu par la ligne `prenom;instrument;niveau`.\nLa ligne citée porte des valeurs, pas des intitulés."
        },
        {
          "text": "Trois objets distincts, un pour chaque valeur séparée\npar un point-virgule",
          "correct": false,
          "feedback": "Erreur : les trois valeurs décrivent une seule et même\npersonne. Le point-virgule sépare les descripteurs, pas les\nobjets."
        },
        {
          "text": "Un commentaire de saisie, que le tableau n'affiche\npas dans ses colonnes",
          "correct": false,
          "feedback": "Erreur : un tableau de données ne contient pas de commentaire.\nToute ligne qui suit les intitulés décrit un objet."
        },
        {
          "text": "Un objet unique, décrit par une valeur pour chaque\ndescripteur",
          "correct": true,
          "feedback": "Bonne réponse : cette ligne décrit Norah, avec sa valeur pour\nl'instrument et sa valeur pour le niveau."
        }
      ],
      "explanation": "Lire un tableau de données, c'est savoir ce que désigne une ligne et\nce que désigne une colonne. Ici, chaque ligne est un élève inscrit et\nchaque colonne un renseignement pris sur tous les élèves."
    },
    {
      "id": "q03",
      "difficulty": 2,
      "skills": [
        "tableau",
        "lecture-tableau"
      ],
      "title": "Compter objets et descripteurs",
      "partie": "descripteurs",
      "statement": "Le club de randonnée publie cet extrait de son fichier.\n\n```csv\nsentier;distance_km;duree_min;difficulte\nLes Cascades;5;90;facile\nLe Belvédère;8;150;moyen\nLa Crête;12;240;difficile\n```\n\nCombien d'objets et combien de descripteurs contient cet extrait ?",
      "options": [
        {
          "text": "Trois objets et quatre descripteurs",
          "correct": true,
          "feedback": "Bonne réponse : trois sentiers sont décrits, chacun par quatre\nrenseignements. La ligne des intitulés ne décrit aucun sentier."
        },
        {
          "text": "Quatre objets et quatre descripteurs",
          "correct": false,
          "feedback": "Erreur : la ligne des intitulés a été comptée comme un sentier.\nElle nomme les descripteurs et ne décrit rien."
        },
        {
          "text": "Trois objets et trois descripteurs",
          "correct": false,
          "feedback": "Erreur : le nom du sentier est lui aussi un descripteur. Il\noccupe une colonne au même titre que la distance ou la durée."
        },
        {
          "text": "Douze objets, un par valeur enregistrée",
          "correct": false,
          "feedback": "Erreur : les douze valeurs se répartissent entre trois objets,\nà raison de quatre valeurs chacun. Une valeur n'est pas un\nobjet."
        }
      ],
      "explanation": "Le nombre d'objets est le nombre de lignes une fois retirée celle des\nintitulés. Le nombre de descripteurs est le nombre de colonnes, le\nnom de l'objet compris."
    },
    {
      "id": "q04",
      "difficulty": 2,
      "skills": [
        "lecture-tableau"
      ],
      "title": "Ce qu'un tableau ne dit pas",
      "partie": "traitements",
      "statement": "Le foyer affiche le tableau des inscriptions aux clubs.\n\n```csv\nprenom;club;jour;places_restantes\nAnaïs;robotique;mardi;3\nTom;théâtre;jeudi;0\nLéna;robotique;jeudi;5\nHugo;échecs;mardi;2\n```\n\nQuelle information ce tableau ne permet-il pas de connaître ?",
      "options": [
        {
          "text": "Le jour de réunion du club de théâtre",
          "correct": false,
          "feedback": "Erreur : la ligne de Tom donne jeudi pour le théâtre.\nL'information se lit directement dans la colonne du jour."
        },
        {
          "text": "Le nombre d'élèves inscrits en robotique",
          "correct": false,
          "feedback": "Erreur : deux lignes portent la mention robotique, celles\nd'Anaïs et de Léna. Il suffit de les compter."
        },
        {
          "text": "L'âge des élèves inscrits dans ces clubs",
          "correct": true,
          "feedback": "Bonne réponse : aucun descripteur ne porte sur l'âge. Un\ntableau ne renseigne que ce que ses colonnes prévoient."
        },
        {
          "text": "Le club qui n'a plus aucune place libre",
          "correct": false,
          "feedback": "Erreur : une seule valeur vaut 0 dans la colonne des places, sur\nla ligne du théâtre. Le club complet est donc identifiable."
        }
      ],
      "explanation": "Avant d'interroger un tableau, on regarde ses descripteurs. Une\nquestion qui porte sur un renseignement absent des colonnes restera\nsans réponse, quel que soit le nombre de lignes."
    },
    {
      "id": "q05",
      "difficulty": 1,
      "skills": [
        "donnees-personnelles",
        "definition"
      ],
      "title": "Ce qu'est une donnée personnelle",
      "partie": "stockage",
      "statement": "Qu'appelle-t-on une donnée personnelle ?",
      "options": [
        {
          "text": "Une information que son propriétaire garde secrète et\nne publie jamais",
          "correct": false,
          "feedback": "Erreur : le secret n'entre pas dans la définition. Un nom\naffiché sur une liste publique reste une donnée personnelle."
        },
        {
          "text": "Une information qui se rapporte à une personne que\nl'on peut identifier",
          "correct": true,
          "feedback": "Bonne réponse : le critère est le lien avec une personne\nidentifiable, directement ou par recoupement, et non le\ncaractère confidentiel du renseignement."
        },
        {
          "text": "Une information enregistrée sur un appareil qui\nappartient à une personne",
          "correct": false,
          "feedback": "Erreur : le propriétaire de l'appareil ne décide de rien ici.\nUne donnée personnelle enregistrée sur un serveur lointain le\nreste tout autant."
        },
        {
          "text": "Une information que la loi interdit de conserver dans\nun fichier",
          "correct": false,
          "feedback": "Erreur : la loi n'interdit pas de conserver ces données, elle\nencadre leur collecte, leur usage et leur durée de vie."
        }
      ],
      "explanation": "Un nom, une adresse, une photographie, une adresse électronique, un\nnuméro de téléphone sont des données personnelles. Le règlement\neuropéen sur la protection des données en encadre l'usage."
    },
    {
      "id": "q06",
      "difficulty": 2,
      "skills": [
        "donnees-personnelles",
        "collecte"
      ],
      "title": "Les questions posées par un formulaire",
      "partie": "stockage",
      "statement": "Le foyer ouvre un formulaire d'inscription à un tournoi d'échecs. Il\ndemande le prénom, le nom et la classe, mais aussi la religion et le\nnuméro de sécurité sociale. Que dit la réglementation ?",
      "options": [
        {
          "text": "Un formulaire peut tout demander à qui accepte d'y\nrépondre",
          "correct": false,
          "feedback": "Erreur : l'accord de la personne ne suffit pas. Une information\nétrangère à l'objet du formulaire n'a pas à être demandée, même\nà titre facultatif."
        },
        {
          "text": "Ces deux questions seraient permises si les réponses\nétaient effacées en juillet",
          "correct": false,
          "feedback": "Erreur : fixer une durée de conservation est une exigence de\nplus, jamais une autorisation de collecte. Une donnée inutile ne\nse collecte pas, fût-ce pour un mois."
        },
        {
          "text": "Tout le formulaire est interdit, le foyer n'étant pas\nune administration",
          "correct": false,
          "feedback": "Erreur : n'importe quelle association peut recueillir les\nrenseignements dont elle a besoin. C'est l'objet des questions\nqui pose problème, pas l'identité de l'organisateur."
        },
        {
          "text": "Ces deux questions sont à retirer, faute de servir à\nl'inscription",
          "correct": true,
          "feedback": "Bonne réponse : on ne collecte que les informations nécessaires\nau but annoncé. La religion et le numéro de sécurité sociale ne\nservent en rien à un tournoi d'échecs."
        }
      ],
      "explanation": "La collecte obéit à deux règles simples : annoncer à quoi serviront\nles données, puis s'en tenir à celles qui servent effectivement à cet\nusage. Toute autre question est à retirer du formulaire."
    },
    {
      "id": "q07",
      "difficulty": 3,
      "skills": [
        "donnees-personnelles",
        "anonymisation"
      ],
      "title": "Un fichier réellement anonyme",
      "partie": "stockage",
      "statement": "Pour publier les résultats d'un sondage, le club de presse retire la\ncolonne des noms mais conserve la classe, la date de naissance et la\ncommune de chaque élève. Le fichier publié est-il anonyme ?",
      "options": [
        {
          "text": "Oui, puisque plus aucun nom ne figure dans le fichier\npublié",
          "correct": false,
          "feedback": "Erreur : c'est la confusion la plus courante. Retirer le nom\nn'empêche pas de reconnaître quelqu'un à partir des autres\ndescripteurs."
        },
        {
          "text": "Oui, à condition que le fichier ne sorte pas de\nl'établissement",
          "correct": false,
          "feedback": "Erreur : l'établissement est justement l'endroit où la\nreconnaissance est la plus facile, puisque chacun connaît les\nélèves de sa classe."
        },
        {
          "text": "Non, ces trois descripteurs réunis désignent souvent\nun élève",
          "correct": true,
          "feedback": "Bonne réponse : une classe compte une trentaine d'élèves, et\ndeux d'entre eux partagent rarement la même date de naissance.\nLe recoupement suffit à identifier."
        },
        {
          "text": "Non, mais à condition de disposer d'un autre fichier\nnominatif",
          "correct": false,
          "feedback": "Erreur : aucun fichier supplémentaire n'est nécessaire. La\nliste des élèves d'une classe est connue de tous ceux qui y\nétudient."
        }
      ],
      "explanation": "Anonymiser ne consiste pas à effacer les noms, mais à s'assurer\nqu'aucun recoupement ne permet de remonter à une personne. On y\nparvient en supprimant des descripteurs ou en les rendant moins\nprécis, par exemple l'année de naissance à la place de la date."
    },
    {
      "id": "q08",
      "difficulty": 1,
      "skills": [
        "csv",
        "format"
      ],
      "title": "Le contenu d'un fichier CSV",
      "partie": "descripteurs",
      "statement": "Nadia reçoit un fichier dont le nom se termine par `.csv`. Que\ncontient ce fichier ?",
      "options": [
        {
          "text": "Du texte, où les valeurs d'un objet sont séparées\npar un même caractère",
          "correct": true,
          "feedback": "Bonne réponse : le format ne retient que les valeurs et un\nséparateur, le plus souvent la virgule ou le point-virgule."
        },
        {
          "text": "Une feuille de calcul, avec ses formules, ses couleurs\net ses largeurs de colonnes",
          "correct": false,
          "feedback": "Erreur : c'est le contenu d'un fichier de tableur. Un fichier\nCSV ne garde ni formule ni mise en forme, seulement les\nvaleurs."
        },
        {
          "text": "Une image du tableau, telle qu'elle apparaît à\nl'écran dans le tableur",
          "correct": false,
          "feedback": "Erreur : une image ne se trie ni ne se filtre. Le fichier\ncontient les valeurs elles-mêmes, qu'un logiciel peut traiter."
        },
        {
          "text": "Un petit programme qui reconstruit le tableau au\nmoment de l'ouverture",
          "correct": false,
          "feedback": "Erreur : aucun programme n'est enregistré dans ce fichier. Il\nse lit tel quel, sans rien exécuter."
        }
      ],
      "explanation": "Les trois lettres du sigle signifient « valeurs séparées par des\nvirgules ». Ce format très simple est lisible par tous les tableurs\net par n'importe quel éditeur de texte, ce qui en fait un bon format\nd'échange."
    },
    {
      "id": "q09",
      "difficulty": 1,
      "skills": [
        "csv",
        "descripteur"
      ],
      "title": "La première ligne d'un fichier CSV",
      "partie": "descripteurs",
      "statement": "Le CDI transmet ce fichier à la classe de Yasmine.\n\n```csv\ntitre;auteur;annee;pages\nLe Petit Prince;Saint-Exupéry;1943;96\nLa Perle;Steinbeck;1947;120\n```\n\nÀ quoi sert la ligne `titre;auteur;annee;pages` ?",
      "options": [
        {
          "text": "Elle indique combien de livres le fichier décrit en\ntout",
          "correct": false,
          "feedback": "Erreur : aucun compte ne figure dans un fichier CSV. Pour\nconnaître le nombre de livres, on compte les lignes qui suivent\nles intitulés."
        },
        {
          "text": "Elle décrit le premier livre, comme toutes les autres\nlignes",
          "correct": false,
          "feedback": "Erreur : elle ne contient aucune valeur de livre. Le premier\nlivre décrit est `Le Petit Prince`, sur la ligne qui suit."
        },
        {
          "text": "Elle donne le nom des descripteurs et ne décrit aucun\nlivre",
          "correct": true,
          "feedback": "Bonne réponse : on l'appelle la ligne d'en-tête. Elle annonce\nce que contient chaque colonne des lignes suivantes."
        },
        {
          "text": "Elle précise le logiciel avec lequel le fichier a été\nproduit",
          "correct": false,
          "feedback": "Erreur : un fichier CSV ne mentionne aucun logiciel, et n'en\nexige aucun. N'importe quel tableur sait l'ouvrir."
        }
      ],
      "explanation": "La ligne d'en-tête donne son sens au reste du fichier : sans elle, on\nlirait une suite de valeurs sans savoir ce que chacune désigne. C'est\nla traduction en texte de la ligne des titres de colonnes."
    },
    {
      "id": "q10",
      "difficulty": 2,
      "skills": [
        "csv",
        "lecture-tableau"
      ],
      "title": "Une valeur absente",
      "partie": "descripteurs",
      "statement": "L'infirmière scolaire relève les tailles et obtient ce fichier.\n\n```csv\nprenom;classe;taille_cm\nYanis;2B;172\nSarah;2D;\nIdriss;2A;168\n```\n\nQue vaut la taille enregistrée pour Sarah ?",
      "options": [
        {
          "text": "Zéro, une valeur absente étant comptée comme nulle",
          "correct": false,
          "feedback": "Erreur : traiter une absence comme un zéro fausserait tout\ncalcul, en abaissant par exemple la taille moyenne de la\nclasse."
        },
        {
          "text": "Aucune valeur, la donnée manque pour cette ligne",
          "correct": true,
          "feedback": "Bonne réponse : la ligne comporte bien trois champs, mais le\ndernier est vide. La donnée n'a pas été relevée."
        },
        {
          "text": "La taille d'Idriss, reprise faute de valeur propre",
          "correct": false,
          "feedback": "Erreur : aucune valeur ne se recopie d'une ligne à l'autre.\nChaque ligne décrit un élève et lui seul."
        },
        {
          "text": "La moyenne des deux autres tailles, soit 170",
          "correct": false,
          "feedback": "Erreur : le calcul est juste mais personne ne l'effectue. Un\nfichier enregistre des relevés, il ne complète pas les trous."
        }
      ],
      "explanation": "Les valeurs manquantes sont fréquentes dans les données réelles.\nAvant tout traitement, il faut décider ce qu'on en fait : écarter la\nligne, relever la valeur à nouveau, ou signaler le manque. Les\nremplacer en silence par un zéro est la pire des solutions."
    },
    {
      "id": "q11",
      "difficulty": 2,
      "skills": [
        "csv",
        "format"
      ],
      "title": "Le même fichier vu par deux logiciels",
      "partie": "descripteurs",
      "statement": "Ibrahim ouvre un même fichier CSV une première fois dans un tableur,\nune seconde fois dans un éditeur de texte. Que constate-t-il ?",
      "options": [
        {
          "text": "Deux contenus différents, le tableur ayant ajouté les\ncolonnes au fichier",
          "correct": false,
          "feedback": "Erreur : le tableur n'ajoute rien au fichier, il se contente de\nrépartir les valeurs dans une grille au moment de l'affichage."
        },
        {
          "text": "Rien dans l'éditeur de texte, qui n'ouvre pas ce\ngenre de fichier",
          "correct": false,
          "feedback": "Erreur : un fichier CSV est justement un fichier texte. Tout\néditeur de texte l'ouvre et en montre les lignes."
        },
        {
          "text": "Un tableau des deux côtés, l'éditeur de texte\ntraçant aussi la grille",
          "correct": false,
          "feedback": "Erreur : un éditeur de texte ne dessine aucune grille. Il\naffiche les lignes telles qu'elles sont écrites, séparateurs\ncompris."
        },
        {
          "text": "Le même contenu, présenté en colonnes d'un côté, en\ntexte de l'autre",
          "correct": true,
          "feedback": "Bonne réponse : le fichier ne change pas, seule sa présentation\ndiffère. Le tableur interprète le séparateur, l'éditeur le\nmontre."
        }
      ],
      "explanation": "Cette simplicité fait la force du format : aucun logiciel particulier\nn'est nécessaire pour lire un fichier CSV, et le contenu reste\nconsultable dans dix ans même si le tableur d'aujourd'hui a disparu."
    },
    {
      "id": "q12",
      "difficulty": 3,
      "skills": [
        "csv",
        "format"
      ],
      "title": "Une valeur entre guillemets",
      "partie": "descripteurs",
      "statement": "Dans ce fichier, les valeurs sont séparées par des virgules.\n\n```csv\nnom,adresse,ville\nBonnet,\"14, rue des Lilas\",Annecy\nKacem,3 place du Marché,Annecy\n```\n\nPourquoi l'adresse de Bonnet est-elle encadrée de guillemets ?",
      "options": [
        {
          "text": "Parce qu'elle contient une virgule, qui serait sinon\nprise pour un séparateur",
          "correct": true,
          "feedback": "Bonne réponse : sans les guillemets, la ligne compterait quatre\nvaleurs au lieu de trois, et la ville serait décalée d'une\ncolonne."
        },
        {
          "text": "Parce qu'une valeur qui contient des espaces doit\nêtre encadrée de guillemets",
          "correct": false,
          "feedback": "Erreur : l'adresse de Kacem contient des espaces et n'est\npourtant pas encadrée. Seul le séparateur oblige aux\nguillemets."
        },
        {
          "text": "Parce que les guillemets signalent une valeur\nincomplète ou douteuse",
          "correct": false,
          "feedback": "Erreur : le format ne prévoit rien pour signaler un doute. Les\nguillemets protègent un caractère gênant, ils ne jugent pas la\nvaleur."
        },
        {
          "text": "Parce que l'adresse et la ville formeraient sinon une\nseule valeur",
          "correct": false,
          "feedback": "Erreur : c'est l'inverse qui se produirait. Sans guillemets,\nl'adresse serait coupée en deux valeurs distinctes."
        }
      ],
      "explanation": "Un séparateur présent à l'intérieur d'une valeur est le piège\nclassique du format. La convention est de placer la valeur entre\nguillemets, que le tableur retire à la lecture. C'est aussi pourquoi\nle point-virgule est souvent préféré à la virgule en France."
    },
    {
      "id": "q13",
      "difficulty": 1,
      "skills": [
        "tri"
      ],
      "title": "Ce que change un tri",
      "partie": "traitements",
      "statement": "Camille trie un tableau de quarante lignes sur le descripteur\n`age`. Qu'est-ce que ce tri change ?",
      "options": [
        {
          "text": "Le nombre de lignes, les âges identiques étant réunis\nen une seule",
          "correct": false,
          "feedback": "Erreur : un tri ne rassemble rien. Deux élèves du même âge\nrestent deux lignes, simplement voisines après le tri."
        },
        {
          "text": "Les valeurs enregistrées, recalculées pour suivre le\nnouvel ordre",
          "correct": false,
          "feedback": "Erreur : aucune valeur n'est modifiée par un tri. Les mêmes\nquarante lignes sont présentes, dans un ordre différent."
        },
        {
          "text": "L'ordre dans lequel les lignes se présentent, et rien\nd'autre",
          "correct": true,
          "feedback": "Bonne réponse : le tri est une opération de présentation. Le\ncontenu du tableau demeure exactement le même."
        },
        {
          "text": "L'ordre des colonnes, rangées à partir du descripteur\nchoisi",
          "correct": false,
          "feedback": "Erreur : un tri porte sur les lignes. Les colonnes gardent\nleur place, quel que soit le descripteur retenu."
        }
      ],
      "explanation": "Trier, c'est réorganiser les objets selon les valeurs d'un\ndescripteur, du plus petit au plus grand ou l'inverse. L'ensemble des\ndonnées reste identique, seule change la façon de le parcourir."
    },
    {
      "id": "q14",
      "difficulty": 2,
      "skills": [
        "tri",
        "lecture-tableau"
      ],
      "title": "Résultat d'un tri croissant",
      "partie": "traitements",
      "statement": "Le club de course enregistre la dernière sortie de chaque membre.\n\n```csv\nprenom;distance_km;temps_min\nLouna;4;22\nBasile;12;35\nMehdi;7;19\nClara;2;14\n```\n\nLe tableau est trié par distance croissante. Dans quel ordre les\nprénoms se présentent-ils ?",
      "options": [
        {
          "text": "Basile, Mehdi, Louna, Clara",
          "correct": false,
          "feedback": "Erreur : c'est l'ordre décroissant, de la plus longue sortie à\nla plus courte. Un tri croissant commence par la plus petite\nvaleur."
        },
        {
          "text": "Clara, Louna, Mehdi, Basile",
          "correct": true,
          "feedback": "Bonne réponse : les distances se suivent alors dans l'ordre\n2, 4, 7 puis 12 kilomètres."
        },
        {
          "text": "Clara, Mehdi, Louna, Basile",
          "correct": false,
          "feedback": "Erreur : c'est le tri par temps croissant, soit 14, 19, 22 puis\n35 minutes. Le descripteur retenu était la distance."
        },
        {
          "text": "Basile, Clara, Louna, Mehdi",
          "correct": false,
          "feedback": "Erreur : c'est l'ordre alphabétique des prénoms. Le tri demandé\nportait sur un descripteur numérique."
        }
      ],
      "explanation": "Un tri se fait toujours sur un descripteur précis et dans un sens\nprécis. Changer l'un ou l'autre donne un tableau différent, alors que\nles lignes restent les mêmes."
    },
    {
      "id": "q15",
      "difficulty": 3,
      "skills": [
        "tri",
        "tableur"
      ],
      "title": "Le tri d'une seule colonne",
      "partie": "traitements",
      "statement": "Dans le tableau des notes de sa classe, Nabil sélectionne la seule\ncolonne des notes, puis demande un tri croissant. Que devient le\ntableau ?",
      "options": [
        {
          "text": "Rien du tout, un tableur refusant de trier une\ncolonne prise isolément",
          "correct": false,
          "feedback": "Erreur : le tri s'exécute sans difficulté. C'est bien ce qui\nrend la manipulation dangereuse."
        },
        {
          "text": "Le tableau entier est trié, le tableur étendant la\nsélection de lui-même",
          "correct": false,
          "feedback": "Erreur : le tableur propose parfois d'étendre la sélection,\nmais il attend une réponse. Refuser la proposition casse le\ntableau."
        },
        {
          "text": "Les notes seules bougent, les autres colonnes étant\nrecalculées en face",
          "correct": false,
          "feedback": "Erreur : aucune colonne n'est recalculée. Un tableur déplace\ndes valeurs, il ne devine pas à qui elles appartiennent."
        },
        {
          "text": "Les notes changent de ligne sans que les noms\nsuivent le mouvement",
          "correct": true,
          "feedback": "Bonne réponse : les notes montent ou descendent seules dans la\ncolonne. Chaque élève se retrouve avec la note d'un autre, sans\nle moindre avertissement."
        }
      ],
      "explanation": "Une ligne forme un tout : ses valeurs décrivent le même objet. Un tri\ndoit donc porter sur le tableau entier, en indiquant seulement le\ndescripteur qui sert de critère. Trier une colonne isolée détruit les\ndonnées sans qu'aucun message le signale."
    },
    {
      "id": "q16",
      "difficulty": 1,
      "skills": [
        "recherche",
        "filtre"
      ],
      "title": "Ce que fait une recherche par critère",
      "partie": "traitements",
      "statement": "Adrien demande à son tableur de n'afficher que les lignes dont le\ndescripteur `classe` vaut `2A`. Que fait le logiciel ?",
      "options": [
        {
          "text": "Il masque les lignes qui n'ont pas cette valeur, sans\nrien effacer",
          "correct": true,
          "feedback": "Bonne réponse : les autres lignes sont toujours là, seulement\ncachées. Retirer le filtre les fait réapparaître aussitôt."
        },
        {
          "text": "Il range les lignes de la classe 2A en tête, les\nautres venant ensuite",
          "correct": false,
          "feedback": "Erreur : ce serait un tri. Un filtre ne déplace aucune ligne,\nil décide seulement lesquelles s'affichent."
        },
        {
          "text": "Il retire définitivement du fichier les lignes des\nautres classes",
          "correct": false,
          "feedback": "Erreur : un filtre ne supprime rien. La confusion est\nfréquente, mais aucune donnée n'est perdue."
        },
        {
          "text": "Il ajoute une colonne où il inscrit oui ou non pour\nchaque ligne",
          "correct": false,
          "feedback": "Erreur : le tableau n'est pas modifié. Le critère sert à\nsélectionner des lignes, pas à créer un descripteur."
        }
      ],
      "explanation": "Rechercher par critère, c'est retenir les objets dont un descripteur\nprend une valeur donnée. L'opération ne transforme pas les données,\nelle en choisit une partie."
    },
    {
      "id": "q17",
      "difficulty": 2,
      "skills": [
        "recherche",
        "filtre",
        "lecture-tableau"
      ],
      "title": "Nombre de lignes retenues",
      "partie": "traitements",
      "statement": "Voici le tableau des langues suivies en seconde.\n\n```csv\nprenom;classe;langue;moyenne\nDjamel;2A;espagnol;13\nAwa;2B;allemand;15\nLucie;2A;allemand;9\nEthan;2C;espagnol;16\nZoé;2A;espagnol;11\n```\n\nCombien de lignes le critère `langue vaut espagnol` retient-il ?",
      "options": [
        {
          "text": "Une seule ligne, celle de Djamel",
          "correct": false,
          "feedback": "Erreur : une recherche par critère ne s'arrête pas au premier\nrésultat trouvé. Elle examine toutes les lignes du tableau."
        },
        {
          "text": "Deux lignes, celles de Djamel et de Zoé",
          "correct": false,
          "feedback": "Erreur : la classe a été prise en compte sans qu'on l'ait\ndemandé. Ethan suit l'espagnol lui aussi, en 2C."
        },
        {
          "text": "Quatre lignes, celles de Djamel, Lucie, Ethan et Zoé",
          "correct": false,
          "feedback": "Erreur : Lucie suit l'allemand. Sa ligne ne satisfait pas le\ncritère, même si elle partage la classe de Djamel et de Zoé."
        },
        {
          "text": "Trois lignes, celles de Djamel, Ethan et Zoé",
          "correct": true,
          "feedback": "Bonne réponse : ce sont les trois lignes dont la colonne de la\nlangue porte la valeur espagnol."
        }
      ],
      "explanation": "Une recherche par critère se vérifie ligne par ligne, en ne regardant\nque le descripteur cité. Les autres colonnes, si parlantes\nsoient-elles, n'entrent pas dans la sélection."
    },
    {
      "id": "q18",
      "difficulty": 3,
      "skills": [
        "recherche",
        "filtre",
        "lecture-tableau"
      ],
      "title": "Deux critères à la fois",
      "partie": "traitements",
      "statement": "Le foyer tient la liste suivante.\n\n```csv\nprenom;classe;demi_pension;latin\nNour;2A;oui;non\nIlyes;2B;oui;oui\nMaëlle;2A;oui;oui\nRémi;2C;non;non\nSelma;2A;non;oui\n```\n\nQuelles lignes retient le critère `classe vaut 2A et demi_pension\nvaut oui` ?",
      "options": [
        {
          "text": "Quatre lignes, celles de Nour, Ilyes, Maëlle et Selma",
          "correct": false,
          "feedback": "Erreur : ce résultat serait celui d'un « ou ». Avec un « et »,\nune ligne doit satisfaire les deux conditions ensemble."
        },
        {
          "text": "Deux lignes, celles de Nour et de Maëlle",
          "correct": true,
          "feedback": "Bonne réponse : ce sont les deux seules lignes qui portent à la\nfois 2A et oui."
        },
        {
          "text": "Trois lignes, celles de Nour, Maëlle et Selma",
          "correct": false,
          "feedback": "Erreur : seule la classe a été vérifiée. Selma n'est pas\ndemi-pensionnaire, sa ligne ne convient pas."
        },
        {
          "text": "Trois lignes, celles de Nour, Ilyes et Maëlle",
          "correct": false,
          "feedback": "Erreur : seule la demi-pension a été vérifiée. Ilyes est en 2B,\nsa ligne ne convient pas."
        }
      ],
      "explanation": "Avec « et », une ligne n'est retenue que si toutes les conditions\nsont satisfaites ; avec « ou », il suffit d'une seule. Les deux\ncritères donnent ici des résultats différents, et il est fréquent de\nles confondre."
    },
    {
      "id": "q19",
      "difficulty": 2,
      "skills": [
        "tri",
        "lecture-tableau"
      ],
      "title": "Un tri sur deux descripteurs",
      "partie": "traitements",
      "statement": "Voici les moyennes du dernier devoir commun.\n\n```csv\nprenom;classe;moyenne\nIsmaël;2B;12\nTalia;2A;14\nJonas;2A;16\nÉva;2B;15\n```\n\nLe tableau est trié par classe croissante puis, à classe égale, par\nmoyenne décroissante. Quel ordre obtient-on ?",
      "options": [
        {
          "text": "Talia, Jonas, Ismaël, Éva",
          "correct": false,
          "feedback": "Erreur : la moyenne a été prise dans l'ordre croissant. Le\nsecond critère demandait l'ordre décroissant."
        },
        {
          "text": "Jonas, Éva, Talia, Ismaël",
          "correct": false,
          "feedback": "Erreur : c'est le tri sur la seule moyenne décroissante, soit\n16, 15, 14 puis 12. La classe a été oubliée."
        },
        {
          "text": "Jonas, Talia, Éva, Ismaël",
          "correct": true,
          "feedback": "Bonne réponse : la 2A passe d'abord avec 16 puis 14, la 2B\nensuite avec 15 puis 12."
        },
        {
          "text": "Éva, Ismaël, Jonas, Talia",
          "correct": false,
          "feedback": "Erreur : c'est l'ordre alphabétique des prénoms, descripteur\nqui n'intervenait dans aucun des deux critères."
        }
      ],
      "explanation": "Le second critère ne départage que les objets à égalité sur le\npremier. Ici, la classe commande le classement général et la moyenne\nn'intervient qu'à l'intérieur de chaque classe."
    },
    {
      "id": "q20",
      "difficulty": 1,
      "skills": [
        "croisement"
      ],
      "title": "Ce qu'exige le croisement de deux tables",
      "partie": "traitements",
      "statement": "Le professeur documentaliste dispose d'une table des lecteurs et\nd'une table des emprunts. Que faut-il pour savoir qui a emprunté\nquel livre ?",
      "options": [
        {
          "text": "Un descripteur commun aux deux tables, ici le numéro\nde lecteur",
          "correct": true,
          "feedback": "Bonne réponse : ce descripteur partagé fait le lien. Chaque\nemprunt porte le numéro du lecteur, ce qui le rattache à une\nligne de l'autre table."
        },
        {
          "text": "Que les deux tables comportent le même nombre de\nlignes exactement",
          "correct": false,
          "feedback": "Erreur : un lecteur peut emprunter plusieurs livres, ou aucun.\nLes deux tables n'ont aucune raison d'avoir la même taille."
        },
        {
          "text": "Que les deux tables soient rangées dans le même ordre\nalphabétique",
          "correct": false,
          "feedback": "Erreur : l'ordre des lignes n'intervient pas. C'est la valeur\ndu descripteur commun qui rapproche deux lignes, pas leur\nplace."
        },
        {
          "text": "Que les deux tables emploient le même séparateur de\nvaleurs",
          "correct": false,
          "feedback": "Erreur : le séparateur ne concerne que l'écriture du fichier.\nDeux tables aux séparateurs différents se croisent sans\ndifficulté."
        }
      ],
      "explanation": "Croiser deux tables, c'est rapprocher leurs lignes grâce à un\ndescripteur qu'elles ont en commun. On obtient ainsi des\nrenseignements qu'aucune des deux ne donnait à elle seule."
    },
    {
      "id": "q21",
      "difficulty": 2,
      "skills": [
        "croisement",
        "lecture-tableau"
      ],
      "title": "Lecture croisée de deux tables",
      "partie": "traitements",
      "statement": "La salle multimédia tient deux tables. Celle des élèves :\n\n```csv\nnum;prenom;classe\n7;Élodie;2A\n8;Noé;2B\n9;Farah;2A\n```\n\net celle des emprunts en cours :\n\n```csv\nnum;materiel;retour\n8;tablette;lundi\n9;casque;mardi\n7;tablette;mardi\n```\n\nQu'a emprunté Farah, et quand doit-elle le rendre ?",
      "options": [
        {
          "text": "Une tablette, à rendre lundi",
          "correct": false,
          "feedback": "Erreur : cet emprunt porte le numéro 8, celui de Noé. Farah est\nenregistrée sous le numéro 9."
        },
        {
          "text": "Une tablette, à rendre mardi",
          "correct": false,
          "feedback": "Erreur : cet emprunt porte le numéro 7, celui d'Élodie. Les\ndeux tables ne rangent pas leurs lignes dans le même ordre."
        },
        {
          "text": "Rien, son numéro est absent des emprunts",
          "correct": false,
          "feedback": "Erreur : le numéro 9 figure bien dans la table des emprunts.\nIl n'ouvre pas la liste, mais il s'y trouve."
        },
        {
          "text": "Un casque, à rendre mardi",
          "correct": true,
          "feedback": "Bonne réponse : Farah porte le numéro 9, et l'emprunt au\nnuméro 9 est un casque à rendre mardi."
        }
      ],
      "explanation": "Le croisement se fait sur la valeur du descripteur commun, jamais sur\nla place des lignes. C'est pourquoi deux tables peuvent être rangées\ndans des ordres différents sans que cela gêne."
    },
    {
      "id": "q22",
      "difficulty": 3,
      "skills": [
        "croisement"
      ],
      "title": "Une ligne sans correspondance",
      "partie": "traitements",
      "statement": "Le club théâtre croise la table des élèves inscrits :\n\n```csv\nnum;prenom\n3;Ayoub\n4;Léonie\n5;Sacha\n```\n\navec celle des ateliers choisis :\n\n```csv\nnum;atelier\n3;cuisine\n5;photo\n```\n\nQue peut-on dire de Léonie après ce croisement ?",
      "options": [
        {
          "text": "Elle suit l'atelier photo, les lignes se\ncorrespondant dans l'ordre",
          "correct": false,
          "feedback": "Erreur : les lignes ne s'apparient pas par leur rang mais par\nleur numéro. L'atelier photo revient au numéro 5, celui de\nSacha."
        },
        {
          "text": "Aucun atelier ne lui est associé, son numéro manque\ndans l'autre table",
          "correct": true,
          "feedback": "Bonne réponse : le numéro 4 n'apparaît pas dans la table des\nateliers. Léonie ne s'est inscrite à aucun atelier, ou son\ninscription n'a pas été saisie."
        },
        {
          "text": "Elle suit les deux ateliers, faute d'indication\ncontraire dans la table",
          "correct": false,
          "feedback": "Erreur : une absence de ligne n'est pas une inscription à tout.\nElle signifie exactement le contraire."
        },
        {
          "text": "Sa ligne disparaît de la table des élèves au moment\ndu croisement",
          "correct": false,
          "feedback": "Erreur : croiser deux tables ne modifie ni l'une ni l'autre.\nLéonie reste une élève inscrite, simplement sans atelier."
        }
      ],
      "explanation": "Un croisement laisse souvent des lignes sans correspondance. Il faut\nalors décider quoi en faire, et surtout comprendre pourquoi : un\noubli de saisie, une erreur de numéro ou une absence bien réelle ne\nse corrigent pas de la même façon."
    },
    {
      "id": "q23",
      "difficulty": 1,
      "skills": [
        "metadonnees",
        "definition"
      ],
      "title": "Ce qu'est une métadonnée",
      "partie": "descripteurs",
      "statement": "Qu'appelle-t-on une métadonnée ?",
      "options": [
        {
          "text": "Une donnée qui en décrit une autre, comme la date\nd'un fichier",
          "correct": true,
          "feedback": "Bonne réponse : la métadonnée ne porte pas le contenu, elle le\ndécrit. Date, taille, auteur et format en sont des exemples."
        },
        {
          "text": "Une donnée effacée d'un fichier mais encore présente\nsur le disque",
          "correct": false,
          "feedback": "Erreur : ces restes existent bel et bien, mais ils n'ont rien à\nvoir. Une métadonnée accompagne le fichier et le renseigne."
        },
        {
          "text": "Une donnée que le fichier réclame à un serveur au\nmoment de son ouverture",
          "correct": false,
          "feedback": "Erreur : aucune connexion n'est nécessaire. Les métadonnées\nsont enregistrées dans le fichier lui-même."
        },
        {
          "text": "Une donnée recopiée dans plusieurs fichiers pour\nparer à une perte",
          "correct": false,
          "feedback": "Erreur : c'est le principe d'une sauvegarde. Une métadonnée ne\nduplique rien, elle renseigne sur le fichier qui la porte."
        }
      ],
      "explanation": "Le préfixe indique un niveau au-dessus : la métadonnée est une donnée\nsur la donnée. Elle sert à retrouver, à classer et à trier des\nfichiers dont on ne consulte pas le contenu."
    },
    {
      "id": "q24",
      "difficulty": 2,
      "skills": [
        "metadonnees",
        "courriel"
      ],
      "title": "Ce qu'un courriel transporte",
      "partie": "descripteurs",
      "statement": "Rachid envoie un courriel à sa professeure. Outre le texte du\nmessage, que transporte cet envoi ?",
      "options": [
        {
          "text": "La liste des messages déjà échangés avec cette\ndestinataire",
          "correct": false,
          "feedback": "Erreur : chaque message voyage seul. Les échanges sont\nregroupés par le logiciel de messagerie, à l'affichage\nseulement."
        },
        {
          "text": "Le mot de passe de la boîte, sans lequel la remise\néchouerait",
          "correct": false,
          "feedback": "Erreur : le mot de passe sert à Rachid pour accéder à sa boîte,\nil ne quitte jamais cette étape et ne circule pas avec le\nmessage."
        },
        {
          "text": "Les adresses des correspondants, la date et le\nchemin suivi",
          "correct": true,
          "feedback": "Bonne réponse : ces renseignements forment l'en-tête du\ncourriel. Ils sont nécessaires à l'acheminement et restent\nattachés au message."
        },
        {
          "text": "La position du téléphone au moment précis où le\nmessage part",
          "correct": false,
          "feedback": "Erreur : un courriel ne contient aucune coordonnée\ngéographique. L'adresse du réseau utilisé y figure parfois, ce\nqui est bien plus vague."
        }
      ],
      "explanation": "Les métadonnées d'un courriel se consultent en affichant l'en-tête\ndu message. Elles en disent long sans qu'on lise une ligne du texte :\nqui écrit à qui, quand, depuis quel service et par quel chemin."
    },
    {
      "id": "q25",
      "difficulty": 2,
      "skills": [
        "metadonnees",
        "donnees-personnelles"
      ],
      "title": "Les métadonnées d'une photo",
      "partie": "descripteurs",
      "statement": "Louna met un vélo en vente sur un site d'annonces et publie une photo\nprise dans son jardin. Pourquoi lui conseille-t-on de retirer les\nmétadonnées du fichier ?",
      "options": [
        {
          "text": "Parce qu'elles alourdissent l'image au point de\nralentir son affichage",
          "correct": false,
          "feedback": "Erreur : elles pèsent quelques milliers d'octets, une part\nminuscule du fichier. Le problème qu'elles posent n'est pas\ncelui de la taille."
        },
        {
          "text": "Parce qu'elles empêchent le site de réduire l'image à\nla bonne taille",
          "correct": false,
          "feedback": "Erreur : un site redimensionne les images sans s'en soucier.\nLes métadonnées ne gênent aucun traitement."
        },
        {
          "text": "Parce qu'elles ouvrent l'accès au contenu du\ntéléphone à qui reçoit le fichier",
          "correct": false,
          "feedback": "Erreur : une photo ne donne accès à rien. Elle renseigne\nseulement sur les conditions de la prise de vue."
        },
        {
          "text": "Parce qu'elles peuvent indiquer l'endroit exact où la\nphoto a été prise",
          "correct": true,
          "feedback": "Bonne réponse : lorsque la localisation de l'appareil est\nactive, les coordonnées du lieu sont inscrites dans le fichier,\nici le domicile de Louna."
        }
      ],
      "explanation": "Une photographie transporte la date, le modèle de l'appareil, les\nréglages et parfois le lieu. Beaucoup de sites retirent ces\nrenseignements à la publication, mais un fichier envoyé directement\nles conserve intacts."
    },
    {
      "id": "q26",
      "difficulty": 2,
      "skills": [
        "nuage",
        "stockage"
      ],
      "title": "Stockage en ligne et sauvegarde",
      "partie": "traitements",
      "statement": "Malik range tous ses documents dans un service de stockage en ligne\nsynchronisé avec son ordinateur, et n'en garde aucune autre copie.\nQue peut-on dire de cette organisation ?",
      "options": [
        {
          "text": "Ses documents sont à l'abri, un tel service ne\nperdant jamais ce qu'il héberge",
          "correct": false,
          "feedback": "Erreur : le service protège d'une panne de disque, non d'une\nfausse manœuvre. Une suppression est recopiée en ligne en\nquelques secondes."
        },
        {
          "text": "Une suppression par erreur se répercute en ligne, il\nn'a pas de sauvegarde",
          "correct": true,
          "feedback": "Bonne réponse : synchroniser n'est pas sauvegarder. Une\nsauvegarde est une copie à part, que rien ne vient modifier\nautomatiquement."
        },
        {
          "text": "Ses documents resteront lisibles même si le service\nferme définitivement",
          "correct": false,
          "feedback": "Erreur : un service peut fermer, changer ses conditions ou\nsuspendre un compte. Sans copie ailleurs, tout disparaît avec\nlui."
        },
        {
          "text": "Ses documents ne sont consultables que depuis\nl'ordinateur qui les a déposés",
          "correct": false,
          "feedback": "Erreur : c'est au contraire l'intérêt du stockage en ligne. Les\ndocuments s'ouvrent depuis n'importe quel appareil raccordé au\ncompte."
        }
      ],
      "explanation": "Le stockage en ligne rend les fichiers accessibles partout et les\nprotège d'une panne de matériel. Il ne protège ni de l'effacement par\nerreur, ni de la disparition du service. Une vraie sauvegarde reste\nune copie séparée, sur un support distinct."
    },
    {
      "id": "q27",
      "difficulty": 3,
      "skills": [
        "nuage",
        "stockage",
        "droit"
      ],
      "title": "Le lieu où les données reposent",
      "partie": "traitements",
      "statement": "Léo confie ses documents à un service de stockage dont les serveurs\nse trouvent hors d'Europe. Quelle conséquence cela entraîne-t-il ?",
      "options": [
        {
          "text": "Aucune, l'emplacement des serveurs ne regarde que le\nservice qui les exploite",
          "correct": false,
          "feedback": "Erreur : ce lieu est au contraire une question sérieuse, parce\nque des données stockées quelque part relèvent aussi du droit\nde ce pays."
        },
        {
          "text": "Ses documents deviennent la propriété de l'entreprise\nqui les héberge",
          "correct": false,
          "feedback": "Erreur : héberger n'est pas posséder. Léo reste l'auteur de ses\ndocuments, quelles que soient les conditions du service."
        },
        {
          "text": "Ses documents relèvent aussi des lois du pays où les\nserveurs sont installés",
          "correct": true,
          "feedback": "Bonne réponse : les autorités de ce pays peuvent en réclamer\nl'accès selon leurs propres règles, qui ne sont pas celles de\nla France."
        },
        {
          "text": "Ses documents ne sont consultables que depuis le pays\nqui les héberge",
          "correct": false,
          "feedback": "Erreur : ils restent accessibles depuis partout. La difficulté\nest juridique, pas technique."
        }
      ],
      "explanation": "Le nuage donne l'impression que les données ne sont nulle part. Elles\noccupent pourtant des disques précis, dans des bâtiments précis,\nsoumis au droit d'un pays précis. C'est la raison pour laquelle les\nadministrations françaises exigent souvent un hébergement en Europe."
    },
    {
      "id": "q28",
      "difficulty": 2,
      "skills": [
        "cycle-de-vie",
        "donnees-personnelles"
      ],
      "title": "La durée de vie d'une donnée",
      "partie": "stockage",
      "statement": "Le lycée enregistre les entrées et les sorties des élèves au portail.\nQue prévoit le cycle de vie de ces données ?",
      "options": [
        {
          "text": "Une durée de conservation fixée à l'avance, suivie\nd'un effacement",
          "correct": true,
          "feedback": "Bonne réponse : on fixe la durée en fonction de l'usage\nannoncé, quelques semaines ici, puis les enregistrements sont\nsupprimés."
        },
        {
          "text": "Une conservation sans limite, l'espace de stockage ne\ncoûtant presque plus rien",
          "correct": false,
          "feedback": "Erreur : le coût n'est pas le critère. Garder indéfiniment des\ndonnées personnelles est précisément ce que la loi interdit."
        },
        {
          "text": "Un effacement immédiat, dès que la donnée a servi une\npremière fois",
          "correct": false,
          "feedback": "Erreur : ce serait excessif. La vie scolaire doit pouvoir\njustifier une absence quelques jours plus tard, ce qui suppose\nde garder la trace un moment."
        },
        {
          "text": "Un versement aux archives nationales à la fin de\nchaque année scolaire",
          "correct": false,
          "feedback": "Erreur : ces relevés quotidiens n'ont aucun intérêt\nhistorique. L'archivage définitif concerne d'autres documents,\nles diplômes par exemple."
        }
      ],
      "explanation": "Une donnée naît lors d'une collecte, sert au but annoncé, puis\ndisparaît ou rejoint une archive. Fixer cette durée à l'avance fait\npartie des obligations de celui qui collecte."
    },
    {
      "id": "q29",
      "difficulty": 1,
      "skills": [
        "donnees-ouvertes",
        "definition"
      ],
      "title": "Ce qu'est une donnée ouverte",
      "partie": "stockage",
      "statement": "Qu'appelle-t-on une donnée ouverte ?",
      "options": [
        {
          "text": "Une donnée qu'un site affiche sans réclamer de compte\nni de mot de passe",
          "correct": false,
          "feedback": "Erreur : être consultable n'est pas être réutilisable. Les\npages d'un journal sont visibles de tous et pourtant\nprotégées."
        },
        {
          "text": "Une donnée que chacun peut corriger directement chez\ncelui qui la publie",
          "correct": false,
          "feedback": "Erreur : la modification reste l'affaire de celui qui publie.\nL'ouverture porte sur la réutilisation, pas sur l'écriture."
        },
        {
          "text": "Une donnée dont on a retiré toute mention de son\nauteur et de sa provenance",
          "correct": false,
          "feedback": "Erreur : la provenance est au contraire précieuse, et sa\nmention est souvent la condition posée par la licence."
        },
        {
          "text": "Une donnée publiée pour que chacun puisse la\nconsulter et la réutiliser",
          "correct": true,
          "feedback": "Bonne réponse : une licence autorise à l'avance la\nréutilisation, y compris pour un service nouveau ou payant."
        }
      ],
      "explanation": "Les administrations publient ainsi les horaires des transports, les\nrésultats des élections ou la qualité de l'air. Chacun peut bâtir un\nservice par-dessus, ce qui serait impossible si l'accès se limitait à\nla consultation."
    },
    {
      "id": "q30",
      "difficulty": 3,
      "skills": [
        "donnees-ouvertes",
        "donnees-personnelles",
        "anonymisation"
      ],
      "title": "Ce qu'on ne publie pas en données ouvertes",
      "partie": "stockage",
      "statement": "Une mairie veut publier en données ouvertes le fichier des\ninscriptions à la cantine, qui comporte le nom, l'adresse et l'école\nde chaque enfant. Que doit-elle faire ?",
      "options": [
        {
          "text": "Publier le fichier tel quel, les données d'un service\npublic étant ouvertes par nature",
          "correct": false,
          "feedback": "Erreur : l'ouverture des données publiques s'arrête là où\ncommencent les données personnelles. Les deux règles se\ncomplètent."
        },
        {
          "text": "Retirer du fichier ce qui permet de reconnaître les\nenfants avant toute publication",
          "correct": true,
          "feedback": "Bonne réponse : on publie des totaux par école ou par quartier,\njamais des lignes nominatives. Le nom et l'adresse n'ont rien à\nfaire dans un fichier ouvert."
        },
        {
          "text": "Publier le fichier en réservant l'accès aux habitants\nde la commune",
          "correct": false,
          "feedback": "Erreur : restreindre le public ne rend pas la publication\nlicite, et une donnée réservée n'est plus une donnée ouverte."
        },
        {
          "text": "Publier le fichier après avoir prévenu le responsable\nde la cantine scolaire",
          "correct": false,
          "feedback": "Erreur : l'accord d'un responsable ne change rien. Ce sont les\nfamilles concernées que la publication exposerait."
        }
      ],
      "explanation": "L'ouverture des données et la protection des données personnelles\nsont deux obligations qui se rencontrent souvent. La solution\nordinaire consiste à publier des données agrégées, qui renseignent\nsur un groupe sans désigner personne."
    },
    {
      "id": "q31",
      "difficulty": 2,
      "skills": [
        "nuage",
        "consommation-energetique"
      ],
      "title": "Ce qui consomme dans un centre de données",
      "partie": "traitements",
      "statement": "Un centre de données héberge les serveurs qui stockent et traitent\nles données du nuage. En plus du fonctionnement des serveurs\neux-mêmes, quel poste pèse le plus dans sa consommation d'énergie ?",
      "options": [
        {
          "text": "L'éclairage des salles où sont rangés les serveurs",
          "correct": false,
          "feedback": "Erreur : les salles sont peu éclairées, et l'éclairage reste\nnégligeable à côté des machines.\n"
        },
        {
          "text": "Le refroidissement des serveurs, qui chauffent en permanence",
          "correct": true,
          "feedback": "Bonne réponse : les serveurs dégagent beaucoup de chaleur, et la\nclimatisation ou le refroidissement par eau peut représenter une\npart comparable à celle du calcul lui-même.\n"
        },
        {
          "text": "L'impression sur papier des documents stockés",
          "correct": false,
          "feedback": "Erreur : un centre de données n'imprime rien, les données\nrestent numériques.\n"
        },
        {
          "text": "Les écrans des techniciens qui surveillent les machines",
          "correct": false,
          "feedback": "Erreur : quelques écrans ne pèsent rien face à des milliers de\nserveurs et à leur refroidissement.\n"
        }
      ],
      "explanation": "L'énergie d'un centre de données part dans les serveurs, qui\ncalculent et stockent, et dans le refroidissement qui évacue leur\nchaleur. C'est pourquoi certains centres s'installent dans des\nrégions froides ou récupèrent leur chaleur pour chauffer des\nbâtiments."
    },
    {
      "id": "q32",
      "difficulty": 3,
      "skills": [
        "nuage",
        "ordres-de-grandeur"
      ],
      "title": "L'ordre de grandeur mondial",
      "partie": "traitements",
      "statement": "D'après l'Agence internationale de l'énergie, quelle part de\nl'électricité consommée dans le monde revenait aux centres de\ndonnées au début des années 2020 ?",
      "options": [
        {
          "text": "Environ 1 à 2 %",
          "correct": true,
          "feedback": "Bonne réponse : de l'ordre de 1 à 2 %, soit quelques centaines\nde térawattheures par an, une part en hausse avec la vidéo en\nligne et l'intelligence artificielle.\n"
        },
        {
          "text": "Environ 25 %",
          "correct": false,
          "feedback": "Erreur : un quart de l'électricité mondiale serait dix fois\ntrop. L'ordre de grandeur est de quelques pour cent au plus.\n"
        },
        {
          "text": "Moins de 0,001 %",
          "correct": false,
          "feedback": "Erreur : les centres de données consomment autant que certains\npays, bien plus qu'un millième de pour cent.\n"
        },
        {
          "text": "Plus de 50 %",
          "correct": false,
          "feedback": "Erreur : l'industrie, les transports et les logements pèsent\nbien davantage. L'ordre de grandeur est de 1 à 2 %.\n"
        }
      ],
      "explanation": "Retenir l'ordre de grandeur, quelques pour cent de l'électricité\nmondiale, permet de situer le numérique : ni négligeable ni\ndominant, mais en croissance rapide, ce qui pose la question de la\nsobriété des usages."
    },
    {
      "id": "q33",
      "difficulty": 1,
      "skills": [
        "descripteur",
        "valeur"
      ],
      "title": "Valeur ou descripteur",
      "partie": "descripteurs",
      "statement": "Le fichier des adhérents du club a pour descripteurs `nom`, `age`\net `ville`. Une ligne contient `Dupont ; 16 ; Lyon`. Que\nreprésente `Lyon` ?",
      "options": [
        {
          "text": "La valeur du descripteur `ville` pour cet adhérent",
          "correct": true,
          "feedback": "Bonne réponse : chaque ligne donne, dans l'ordre des\ndescripteurs, les valeurs qui décrivent un adhérent. `Lyon` est\nla valeur de `ville`."
        },
        {
          "text": "Un descripteur, au même titre que `nom` et `age`",
          "correct": false,
          "feedback": "Erreur : les descripteurs sont les noms des colonnes. `Lyon`\nest une donnée, pas le nom d'une colonne."
        },
        {
          "text": "Un objet du fichier, décrit par `Dupont` et `16`",
          "correct": false,
          "feedback": "Erreur : l'objet décrit est l'adhérent, représenté par la ligne\nentière. `Lyon` n'en est qu'une caractéristique."
        },
        {
          "text": "Une métadonnée du fichier, indiquant où il a été créé",
          "correct": false,
          "feedback": "Erreur : une métadonnée décrit le fichier lui-même. `Lyon` fait\npartie des données qu'il contient."
        }
      ],
      "explanation": "Un descripteur est le nom d'une caractéristique ; une valeur est ce\nque vaut cette caractéristique pour un objet donné."
    },
    {
      "id": "q34",
      "difficulty": 2,
      "skills": [
        "csv",
        "separateur",
        "format"
      ],
      "title": "Le choix du point-virgule",
      "partie": "descripteurs",
      "statement": "Le fichier CSV exporté par le tableur de Nora sépare les valeurs par\ndes points-virgules et non par des virgules. Pourquoi ce choix est-il\nfréquent en France ?",
      "options": [
        {
          "text": "Parce que la virgule sert déjà de séparateur décimal",
          "correct": true,
          "feedback": "Bonne réponse : avec des nombres écrits `3,5`, une virgule\nséparatrice couperait chaque nombre en deux. Le point-virgule\névite l'ambiguïté."
        },
        {
          "text": "Parce que le point-virgule occupe moins de place que la virgule",
          "correct": false,
          "feedback": "Erreur : les deux signes occupent un caractère. La taille du\nfichier n'est pas en cause."
        },
        {
          "text": "Parce que les tableurs ne savent pas lire les virgules dans un fichier",
          "correct": false,
          "feedback": "Erreur : un tableur lit l'un ou l'autre, à condition de lui\nindiquer le séparateur utilisé."
        },
        {
          "text": "Parce que la virgule est réservée aux fichiers en anglais",
          "correct": false,
          "feedback": "Erreur : rien n'est réservé. Le choix dépend de la convention\nd'écriture des nombres, pas de la langue du fichier."
        }
      ],
      "explanation": "CSV signifie « valeurs séparées par des virgules », mais le\nséparateur se choisit. Quand la virgule marque les décimales, le\npoint-virgule prend sa place."
    },
    {
      "id": "q35",
      "difficulty": 3,
      "skills": [
        "descripteur",
        "structuration",
        "traitement"
      ],
      "title": "Un descripteur trop large",
      "partie": "descripteurs",
      "statement": "Le fichier des adhérents range dans une seule colonne `adresse`\ndes valeurs comme `12 rue des Lilas, 69003 Lyon`. Le trésorier veut\ncompter les adhérents par ville. Que lui conseille-t-on ?",
      "options": [
        {
          "text": "Séparer l'adresse en plusieurs descripteurs, dont `ville`",
          "correct": true,
          "feedback": "Bonne réponse : avec une colonne `ville`, un tri ou un filtre\ndonne le compte immédiatement. Une valeur composite empêche\ntout traitement simple."
        },
        {
          "text": "Trier la colonne `adresse`, les villes se retrouvant alors groupées",
          "correct": false,
          "feedback": "Erreur : le tri porte sur le début de la valeur, ici le numéro\net la rue. Les adhérents d'une même ville restent dispersés."
        },
        {
          "text": "Supprimer la colonne `adresse`, qui ne sert à rien pour ce comptage",
          "correct": false,
          "feedback": "Erreur : l'information nécessaire, la ville, se trouve justement\ndans cette colonne. Il faut la restructurer, pas la perdre."
        },
        {
          "text": "Ajouter une ligne par ville à la fin du fichier, avec son total",
          "correct": false,
          "feedback": "Erreur : une ligne représente un adhérent. Mêler des totaux aux\ndonnées rendrait le fichier incohérent."
        }
      ],
      "explanation": "Un bon descripteur contient une seule information. Découper les\nvaleurs composites est ce qui rend possibles tris, filtres et\ncalculs."
    },
    {
      "id": "q36",
      "difficulty": 2,
      "skills": [
        "calcul",
        "agregation",
        "tableau"
      ],
      "title": "Un calcul sur une colonne",
      "partie": "traitements",
      "statement": "Le tableau des ventes de la cafétéria indique, pour le descripteur\n`sandwichs`, les valeurs $12$ (lundi), $8$ (mardi), $15$\n(mercredi) et $9$ (jeudi). Combien de sandwichs ont été vendus\nsur ces quatre jours ?",
      "options": [
        {
          "text": "$44$, la somme des quatre valeurs",
          "correct": true,
          "feedback": "Bonne réponse : le total d'une colonne s'obtient par la somme\nde ses valeurs : $12 + 8 + 15 + 9 = 44$."
        },
        {
          "text": "$11$, la valeur moyenne d'une journée",
          "correct": false,
          "feedback": "Erreur : $11$ est la moyenne, c'est-à-dire la somme divisée par\nquatre. La question porte sur le total."
        },
        {
          "text": "$15$, la meilleure des quatre journées",
          "correct": false,
          "feedback": "Erreur : $15$ est le maximum de la colonne, pas le total."
        },
        {
          "text": "$4$, le nombre de journées comptées",
          "correct": false,
          "feedback": "Erreur : $4$ est le nombre de lignes retenues, pas le nombre de\nsandwichs."
        }
      ],
      "explanation": "Somme, moyenne, maximum ou nombre de lignes sont des calculs\ndifférents sur une même colonne. Le choix dépend de la question\nposée.",
      "variants": [
        {
          "statement": "Le tableau des ventes de la cafétéria indique, pour le descripteur\n`sandwichs`, les valeurs $12$ (lundi), $8$ (mardi), $15$\n(mercredi) et $9$ (jeudi). Combien de sandwichs ont été vendus\nsur ces quatre jours ?",
          "options": [
            {
              "text": "$44$, la somme des quatre valeurs",
              "correct": true,
              "feedback": "Bonne réponse : le total d'une colonne s'obtient par la somme\nde ses valeurs : $12 + 8 + 15 + 9 = 44$."
            },
            {
              "text": "$11$, la valeur moyenne d'une journée",
              "correct": false,
              "feedback": "Erreur : $11$ est la moyenne, c'est-à-dire la somme divisée par\nquatre. La question porte sur le total."
            },
            {
              "text": "$15$, la meilleure des quatre journées",
              "correct": false,
              "feedback": "Erreur : $15$ est le maximum de la colonne, pas le total."
            },
            {
              "text": "$4$, le nombre de journées comptées",
              "correct": false,
              "feedback": "Erreur : $4$ est le nombre de lignes retenues, pas le nombre de\nsandwichs."
            }
          ],
          "explanation": "Somme, moyenne, maximum ou nombre de lignes sont des calculs\ndifférents sur une même colonne. Le choix dépend de la question\nposée."
        },
        {
          "statement": "Le tableau des ventes de la cafétéria indique, pour le descripteur\n`sandwichs`, les valeurs $20$ (lundi), $14$ (mardi), $6$\n(mercredi) et $16$ (jeudi). Combien de sandwichs ont été vendus\nsur ces quatre jours ?",
          "options": [
            {
              "text": "$56$, la somme des quatre valeurs",
              "correct": true,
              "feedback": "Bonne réponse : le total d'une colonne s'obtient par la somme\nde ses valeurs : $20 + 14 + 6 + 16 = 56$."
            },
            {
              "text": "$14$, la valeur moyenne d'une journée",
              "correct": false,
              "feedback": "Erreur : $14$ est la moyenne, c'est-à-dire la somme divisée par\nquatre. La question porte sur le total."
            },
            {
              "text": "$20$, la meilleure des quatre journées",
              "correct": false,
              "feedback": "Erreur : $20$ est le maximum de la colonne, pas le total."
            },
            {
              "text": "$4$, le nombre de journées comptées",
              "correct": false,
              "feedback": "Erreur : $4$ est le nombre de lignes retenues, pas le nombre de\nsandwichs."
            }
          ],
          "explanation": "Somme, moyenne, maximum ou nombre de lignes sont des calculs\ndifférents sur une même colonne. Le choix dépend de la question\nposée."
        },
        {
          "statement": "Le tableau des ventes de la cafétéria indique, pour le descripteur\n`sandwichs`, les valeurs $7$ (lundi), $11$ (mardi), $13$\n(mercredi) et $5$ (jeudi). Combien de sandwichs ont été vendus\nsur ces quatre jours ?",
          "options": [
            {
              "text": "$36$, la somme des quatre valeurs",
              "correct": true,
              "feedback": "Bonne réponse : le total d'une colonne s'obtient par la somme\nde ses valeurs : $7 + 11 + 13 + 5 = 36$."
            },
            {
              "text": "$9$, la valeur moyenne d'une journée",
              "correct": false,
              "feedback": "Erreur : $9$ est la moyenne, c'est-à-dire la somme divisée par\nquatre. La question porte sur le total."
            },
            {
              "text": "$13$, la meilleure des quatre journées",
              "correct": false,
              "feedback": "Erreur : $13$ est le maximum de la colonne, pas le total."
            },
            {
              "text": "$4$, le nombre de journées comptées",
              "correct": false,
              "feedback": "Erreur : $4$ est le nombre de lignes retenues, pas le nombre de\nsandwichs."
            }
          ],
          "explanation": "Somme, moyenne, maximum ou nombre de lignes sont des calculs\ndifférents sur une même colonne. Le choix dépend de la question\nposée."
        }
      ]
    },
    {
      "id": "q37",
      "difficulty": 2,
      "skills": [
        "filtre",
        "tri",
        "enchainement"
      ],
      "title": "Filtrer puis trier",
      "partie": "traitements",
      "statement": "Dans le fichier de tous les élèves du lycée, Inès veut obtenir la\nliste des élèves de la classe 2B classés par ordre alphabétique de\nnom. Quelle suite d'opérations effectue-t-elle ?",
      "options": [
        {
          "text": "Un filtre sur `classe`, puis un tri sur `nom`",
          "correct": true,
          "feedback": "Bonne réponse : le filtre ne garde que les lignes voulues, le\ntri les range ensuite. Trier d'abord fonctionnerait aussi, mais\nsur bien plus de lignes."
        },
        {
          "text": "Un tri croissant sur `classe`, puis un tri croissant sur `nom`",
          "correct": false,
          "feedback": "Erreur : trier ne retire aucune ligne. Tous les élèves du lycée\nresteraient dans la liste."
        },
        {
          "text": "Une recherche de la valeur 2B dans la colonne `nom`",
          "correct": false,
          "feedback": "Erreur : 2B est une valeur du descripteur `classe`, pas un nom\nd'élève. La recherche ne trouverait rien."
        },
        {
          "text": "Un calcul du nombre d'élèves dans chaque classe",
          "correct": false,
          "feedback": "Erreur : un comptage donne un nombre, pas une liste de noms."
        }
      ],
      "explanation": "Les traitements se combinent : un filtre sélectionne des lignes, un\ntri les ordonne, un calcul les résume."
    },
    {
      "id": "q38",
      "difficulty": 3,
      "skills": [
        "filtre",
        "criteres",
        "ou-logique"
      ],
      "title": "Un filtre avec « ou »",
      "partie": "traitements",
      "statement": "Voici cinq adhérents, avec leur âge et leur ville : Ali, $17$,\nNantes ; Bea, $15$, Rennes ; Cem, $18$, Lyon ; Dao, $14$, Lyon ;\nEli, $15$, Nantes. Combien de lignes garde le filtre « âge\nsupérieur à $15$ **ou** ville égale à Lyon » ?",
      "options": [
        {
          "text": "$3$ lignes, Ali, Cem et Dao",
          "correct": true,
          "feedback": "Bonne réponse : Ali et Cem ont plus de $15$ ans, Cem et Dao\nhabitent Lyon. Cem ne compte qu'une fois : trois lignes."
        },
        {
          "text": "$1$ ligne, Cem seulement",
          "correct": false,
          "feedback": "Erreur : Cem est le seul à vérifier les deux critères, mais avec\n« ou » un seul critère suffit pour être retenu."
        },
        {
          "text": "$4$ lignes, deux pour l'âge et deux pour la ville",
          "correct": false,
          "feedback": "Erreur : Cem vérifie les deux critères et ne doit être compté\nqu'une fois. Les lignes retenues sont Ali, Cem et Dao."
        },
        {
          "text": "$2$ lignes, Ali et Cem",
          "correct": false,
          "feedback": "Erreur : ce sont les lignes retenues par le seul critère d'âge.\nDao, qui habite Lyon, est aussi retenu."
        }
      ],
      "explanation": "Avec « ou », une ligne est gardée dès qu'un critère est vrai ; avec\n« et », il faut que tous le soient. Une ligne qui vérifie les deux\nn'est comptée qu'une fois."
    },
    {
      "id": "q39",
      "difficulty": 2,
      "skills": [
        "croisement",
        "descripteur-commun"
      ],
      "title": "Le descripteur qui relie deux tables",
      "partie": "traitements",
      "statement": "La table `eleves` a pour descripteurs `id`, `nom` et `classe` ; la\ntable `emprunts` a pour descripteurs `id_eleve`, `livre` et `date`.\nQuel descripteur permet de croiser les deux tables pour savoir qui\na emprunté quoi ?",
      "options": [
        {
          "text": "`id` de `eleves`, qui correspond à `id_eleve` de `emprunts`",
          "correct": true,
          "feedback": "Bonne réponse : la même valeur, l'identifiant de l'élève, est\nprésente dans les deux tables. C'est elle qui associe chaque\nemprunt à un élève."
        },
        {
          "text": "`nom`, présent dans la table des élèves",
          "correct": false,
          "feedback": "Erreur : `nom` n'apparaît pas dans `emprunts`. Pour croiser, il\nfaut une valeur commune aux deux tables."
        },
        {
          "text": "`livre`, qui identifie chaque emprunt dans la seconde table",
          "correct": false,
          "feedback": "Erreur : `livre` ne figure que dans `emprunts` et ne dit rien\nsur l'élève."
        },
        {
          "text": "`classe`, car tous les élèves d'une classe empruntent ensemble",
          "correct": false,
          "feedback": "Erreur : `classe` est absent de `emprunts`, et un emprunt est\nle fait d'un élève, pas d'une classe."
        }
      ],
      "explanation": "Croiser deux tables exige un descripteur commun, souvent un\nidentifiant, dont les valeurs se correspondent d'une table à\nl'autre."
    },
    {
      "id": "q40",
      "difficulty": 1,
      "skills": [
        "nuage",
        "synchronisation"
      ],
      "title": "Un dossier synchronisé",
      "partie": "stockage",
      "statement": "Lina a activé la synchronisation d'un dossier de son ordinateur\navec un service de stockage en ligne. Que se passe-t-il lorsqu'elle\nmodifie un fichier de ce dossier ?",
      "options": [
        {
          "text": "La version en ligne et ses autres appareils reçoivent la modification",
          "correct": true,
          "feedback": "Bonne réponse : la synchronisation maintient à l'identique le\ndossier local, la copie en ligne et les copies des autres\nappareils connectés au même compte."
        },
        {
          "text": "Rien, tant qu'elle n'envoie pas elle-même le fichier sur le site du service",
          "correct": false,
          "feedback": "Erreur : la synchronisation est automatique. C'est précisément\nce qui la distingue d'un envoi manuel."
        },
        {
          "text": "Le fichier est supprimé de l'ordinateur et ne reste qu'en ligne",
          "correct": false,
          "feedback": "Erreur : la copie locale est conservée. La synchronisation\nduplique, elle ne déplace pas."
        },
        {
          "text": "Le fichier est copié en ligne une seule fois, les modifications suivantes restant locales",
          "correct": false,
          "feedback": "Erreur : chaque modification est propagée, pas seulement la\npremière."
        }
      ],
      "explanation": "Synchroniser, c'est maintenir plusieurs copies identiques : toute\nmodification sur l'une se répercute sur les autres."
    },
    {
      "id": "q41",
      "difficulty": 2,
      "skills": [
        "nuage",
        "partage",
        "droits"
      ],
      "title": "Un lien de partage trop ouvert",
      "partie": "stockage",
      "statement": "Pour un exposé, Sami partage un document en ligne avec le réglage\n« toute personne disposant du lien peut modifier », puis envoie le\nlien à son groupe. Quel est le risque ?",
      "options": [
        {
          "text": "Quiconque reçoit le lien peut modifier le document",
          "correct": true,
          "feedback": "Bonne réponse : le lien vaut autorisation. S'il circule hors du\ngroupe, n'importe qui peut lire et réécrire le travail."
        },
        {
          "text": "Le document est automatiquement publié sur un moteur de recherche",
          "correct": false,
          "feedback": "Erreur : un lien de partage n'est pas référencé par les moteurs.\nLe risque vient de sa circulation, pas de son indexation."
        },
        {
          "text": "Les membres du groupe ne peuvent que lire le document",
          "correct": false,
          "feedback": "Erreur : le réglage choisi autorise la modification, pour le\ngroupe comme pour tout autre détenteur du lien."
        },
        {
          "text": "Aucun, le lien étant bien trop long pour être deviné par un inconnu",
          "correct": false,
          "feedback": "Erreur : le lien ne sera pas deviné, il sera transmis. Un\nmessage transféré suffit à ouvrir l'accès."
        }
      ],
      "explanation": "Les réglages de partage vont du plus fermé, des personnes nommées,\nau plus ouvert, le lien public modifiable. Choisir le niveau\nnécessaire, et pas davantage."
    },
    {
      "id": "q42",
      "difficulty": 2,
      "skills": [
        "nuage",
        "synchronisation",
        "suppression"
      ],
      "title": "Un fichier supprimé sur le téléphone",
      "partie": "stockage",
      "statement": "Depuis son téléphone, Lina supprime une photo rangée dans son\ndossier synchronisé. Que devient cette photo ?",
      "options": [
        {
          "text": "Elle disparaît aussi en ligne et sur ses autres appareils",
          "correct": true,
          "feedback": "Bonne réponse : la suppression est une modification comme une\nautre, propagée partout. Seule la corbeille du service, quand\nelle existe, permet de la récupérer un temps."
        },
        {
          "text": "Elle reste sur l'ordinateur, la synchronisation ne transmettant que les ajouts",
          "correct": false,
          "feedback": "Erreur : la synchronisation reproduit tous les changements,\nsuppressions comprises."
        },
        {
          "text": "Elle est conservée définitivement en ligne, à titre de sauvegarde",
          "correct": false,
          "feedback": "Erreur : un dossier synchronisé n'est pas une sauvegarde. La\ncopie en ligne suit l'état du dossier, y compris ses\nsuppressions."
        },
        {
          "text": "Le service demande confirmation sur chaque appareil avant de la supprimer",
          "correct": false,
          "feedback": "Erreur : aucune confirmation n'est demandée ailleurs. La\nsuppression est répercutée automatiquement."
        }
      ],
      "explanation": "Synchronisation et sauvegarde ne se confondent pas : la première\npropage les erreurs aussi vite que les ajouts, la seconde conserve\ndes versions antérieures."
    },
    {
      "id": "q43",
      "difficulty": 1,
      "skills": [
        "donnees-ouvertes",
        "format",
        "csv"
      ],
      "title": "Récupérer un jeu de données ouvert",
      "partie": "stockage",
      "statement": "Sur un site de données ouvertes, Théo trouve la liste des stations\nde vélos de sa ville. Sous quel format la télécharge-t-il pour\nl'ouvrir dans un tableur et la trier ?",
      "options": [
        {
          "text": "Au format CSV, lisible par tout tableur",
          "correct": true,
          "feedback": "Bonne réponse : le CSV est le format le plus courant des sites\nde données ouvertes. Il s'ouvre dans un tableur et se prête aux\ntris, filtres et calculs."
        },
        {
          "text": "Au format PDF, qui présente le tableau proprement",
          "correct": false,
          "feedback": "Erreur : un PDF est fait pour être lu, pas traité. Ses valeurs\nne se trient pas dans un tableur."
        },
        {
          "text": "Au format JPEG, en capturant l'image du tableau",
          "correct": false,
          "feedback": "Erreur : une image ne contient aucune valeur exploitable, juste\ndes pixels."
        },
        {
          "text": "Au format MP3, plus compact pour le téléchargement",
          "correct": false,
          "feedback": "Erreur : le MP3 est un format audio, sans rapport avec un\ntableau de données."
        }
      ],
      "explanation": "Les données ouvertes sont publiées dans des formats structurés et\nlisibles par machine, CSV en tête, pour être réutilisées librement."
    },
    {
      "id": "q44",
      "difficulty": 2,
      "skills": [
        "donnees-ouvertes",
        "licence",
        "reutilisation"
      ],
      "title": "Ce que permet une licence ouverte",
      "partie": "stockage",
      "statement": "Les horaires des bus de la ville sont publiés sous licence ouverte.\nQue peut en faire Maya pour son application de trajets ?",
      "options": [
        {
          "text": "Les reprendre librement, même pour une application payante",
          "correct": true,
          "feedback": "Bonne réponse : une licence ouverte autorise tous les usages, y\ncompris commerciaux, à condition de mentionner d'où viennent les\ndonnées."
        },
        {
          "text": "Les consulter seulement, toute copie ou rediffusion étant interdite",
          "correct": false,
          "feedback": "Erreur : l'ouverture consiste justement à autoriser la copie et\nla réutilisation."
        },
        {
          "text": "Les utiliser à condition que son application reste gratuite",
          "correct": false,
          "feedback": "Erreur : la licence ouverte n'interdit pas l'usage commercial."
        },
        {
          "text": "Les utiliser uniquement si elle travaille pour la mairie qui les publie",
          "correct": false,
          "feedback": "Erreur : les données ouvertes s'adressent à tous, citoyens,\nentreprises et associations."
        }
      ],
      "explanation": "Ouvrir des données, c'est permettre à chacun de les reprendre\nlibrement, la seule obligation habituelle étant d'en indiquer la\nsource."
    },
    {
      "id": "q45",
      "difficulty": 3,
      "skills": [
        "nuage",
        "sauvegarde",
        "versions"
      ],
      "title": "Retrouver la version d'hier",
      "partie": "stockage",
      "statement": "Lina a écrasé par erreur une partie de son exposé et la\nsynchronisation a déjà propagé la version abîmée partout. Quelle\nfonction lui permet de retrouver la version de la veille ?",
      "options": [
        {
          "text": "L'historique des versions d'un service de sauvegarde",
          "correct": true,
          "feedback": "Bonne réponse : une sauvegarde garde les états successifs d'un\nfichier. La synchronisation seule ne conserve que le dernier,\nerreur comprise."
        },
        {
          "text": "La synchronisation elle-même, qui garde toujours la version précédente",
          "correct": false,
          "feedback": "Erreur : la synchronisation remplace l'ancienne version par la\nnouvelle sur tous les appareils, elle ne garde rien d'autre."
        },
        {
          "text": "Le partage du document, qui en crée une copie chez chaque destinataire",
          "correct": false,
          "feedback": "Erreur : partager donne accès au même document, pas à une copie\nfigée. Les destinataires voient aussi la version abîmée."
        },
        {
          "text": "La compression du fichier, qui en préserve le contenu d'origine",
          "correct": false,
          "feedback": "Erreur : compresser réduit la taille d'un fichier, cela ne\nconserve aucune version antérieure."
        }
      ],
      "explanation": "Une sauvegarde digne de ce nom conserve plusieurs versions dans le\ntemps. C'est ce qui protège des erreurs humaines, contre lesquelles\nla synchronisation ne peut rien."
    }
  ]
}