\begin{exercise}[subtitle={Table ASCII}, step={1}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
    Vous trouverez la table ASCII à la fin de l'exercice.

    \begin{enumerate}
        \item Combien de caractères sont décrits par cette table?
        \item Quels sont les caractères d'écriture absents de cette table?
        \item Combien de bits sont nécessaires pour encoder un caractère avec la table ascii? Combien d'octets?
        \item Encoder en binaire puis en héxadécimal grâce à la table ASCII le message \Ovalbox{\texttt{NSI <3}}.
        \item Décoder grace à la table ASCII le message
            \begin{center}
                01001101 01100001 01110100 01101000 00100000 00101011 00100000 01010011 01010110 01010100 00100000 00101011 00100000 01010000 01000011 00100000 00111101 00100000 00111100 00110011
            \end{center}
        \item Décoder grace à la table ASCII le message
            \begin{center}
               4D 61 74 68 3A 29
            \end{center}
        \item Le programme de première NSI contient \np{25107} caractères. Quelle sera son poids s'il est numérisé en ASCII? Vous exprimerez le résultat en octet et en bit.
    \end{enumerate}
    \begin{center}
        \includegraphics[scale=0.35]{./fig/ascii_table}
    \end{center}
\end{exercise}

\begin{exercise}[subtitle={Table ASCII et Python}, step={1}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
    En Python, il existe deux fonctions qui permettent de convertir un caractère en son point de code (lisez place dans la table ASCII pour le moment) en décimal et inversement.
    \begin{itemize}
        \item \mintinline{python}{ord}: caractère vers point de code
        \item \mintinline{python}{chr}: point de code vers le caractère
    \end{itemize}
    \begin{enumerate}
        \item Avec python afficher les 128 craactères de la table ascii (Bonus: faites les apparaitres sur 4 colonnes comme dans la table au dessus).
        \item Comparer le résultat avec la table obtenu.
    \end{enumerate}
\end{exercise}

\begin{exercise}[subtitle={Norme ISO-8859-1}, step={1}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
    \begin{enumerate}
        \item Chercher la table d'encodage ISO-8859-1 (ou latin-1).
        \item Comparer cette table avec la table ASCII.
        \item Encoder le mot \texttt{a«€éø}
    \end{enumerate}
\end{exercise}

\begin{exercise}[subtitle={Unicode table}, step={2}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
    La norme Unicode découpe le processus d'encodage en deux parties: le point de code et l'encodage.

    Vous trouverez les points de code et les encodages correspondant sur le moteur de recherche \url{https://unicode-table.com/fr}.

    \begin{enumerate}
        \item Compléter le tableau ci-dessous avec les points de code et les encodage (représentée sous la forme qui vous semble la plus familière).
            \begin{center}
                \begin{tabular}{|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}
                    \hline
                    Caractère & Point de code & UTF-8 & UTF-16BE  & UTF-32BE \\
                    \hline
                    I       & & & &\\
                    \hline
                    \euro   & & & &\\
                    \hline
                    $\aleph$ & & & &\\
                    \hline
                     & U+20B3 & & &\\
                    \hline
                     & U+1F606 & & &\\
                    \hline
                     & U+FE9A & & &\\
                    \hline
                \end{tabular}
            \end{center}
        \item Quels sont les caractères qui sont inclus dans la norme Unicode?
        \item Quels sont les encodages possibles et quelles sont leur caractéristiques?
        \item Comment est placé la table ASCII dans cette norme?
    \end{enumerate}
\end{exercise}

\begin{exercise}[subtitle={Exploration de l'Unicode}, step={2}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
    Notebook \texttt{02\_unicode}
\end{exercise}

\begin{exercise}[subtitle={Les strings en Python et cryptographie}, step={2}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement }]
    Notebook \texttt{03\_str}
\end{exercise}

\begin{exercise}[subtitle={QCM}, step={4}, origin={}, topics={ Representation de texte }, tags={ ASCII, Chiffrement, QCM}]
    \begin{enumerate}[label={\textbf{Question \arabic*:}}, leftmargin=*, wide=0pt]
        \item Quel est un avantage du codage UTF8 par rapport au codage ASCII ?
            \begin{tasks}(2)
                \task il permet de coder un caractère sur un octet au lieu de deux
                \task il permet de coder différentes polices de caractères
                \task il permet de coder les majuscules
                \task il permet de coder tous les caractères
            \end{tasks}

        \item On considère les codes ASCII en écriture hexadécimale (en base 16).

            Le code ASCII de la lettre A est 0x41, celui de la lettre B est 0x42, celui de la lettre C est 0x43, etc.

            Quelle est le code ASCII, en hexadécimale, de la lettre X (c'est la 24ième lettre de l'alphabet usuel)
            \begin{tasks}(4)
                \task 0x58
                \task 0x64
                \task 0x7A
                \task 0x88
            \end{tasks}

        \item  Laquelle de ces affirmations concernant le codage UTF-8 des caractères est vraie ?
            \begin{tasks}(2)
                \task le codage UTF-8 est sur 7bits
                \task le codage UTF-8 est sur 8bits
                \task le codage UTF-8 est sur 1 à 4 octets
                \task le codage UTF-8 est sur 8 octets
            \end{tasks}
        \item  Parmi les caractères ci-dessous, lequel ne fait pas partie du code ASCII ?
            \begin{tasks}(4)
                \task a
                \task A
                \task @
                \task é
            \end{tasks}
        \item Dans le bloc <head> d'un fichier HTML, afin d'encoder les caractères avec le standard Unicode/UTF-8  on insère la ligne :
            \begin{center}
                <meta http-equiv="Content -Type" content="text/html; charset=UTF-8">
            \end{center}
            Pourquoi cela ?
            \begin{tasks}(2)
                \task UTF-8 est l'encodage Linux
                \task ASCII est une vieille norme, il est temps d'en changer
                \task UTF-8 est une norme conçue pour permettre un affichage correct des caractères spéciaux sur tout système
                \task UTF-8 est un encodage qui protège mieux contre le piratage informatique.
            \end{tasks}
    \end{enumerate}
\end{exercise}
