Exercices

Les exercices précédés du symbole sont à faire sur machine, en sauvegardant le fichier si nécessaire.

Les exercices précédés du symbole doivent être résolus par écrit.

Exercice 1

Écrire une procédure qui affiche à l’écran la table des 128 caractères ASCII sur 8 lignes de 16 colonnes, avec deux boucles for imbriquées et la fonction chr().

Exercice 2

L’encodage consiste à coder un caractère par un nombre. Il ne faut pas confondre cette opération de numérisation avec le chiffrement, ou cryptage, qui consiste aussi à remplacer des caractères par des nombres, mais de telle façon que le décodage ne puisse se faire que par le destinataire du message. La numérisation est cependant le plus souvent la première étape du chiffrement.

Considérons le procédé rot-13 qui consiste à remplacer une lettre codée par l’entier \(n\) par la lettre codée par l’entier \(n+13\) (on se limite aux caractères de la table ASCII).

Comme l’alphabet latin compte 26 lettres, le déchiffrement se fait exactement par la même opération.

Pour trouver que l’image par rot-13 du caractère ‘R’ est ‘E’ :

  • on calcule d’abord le rang alphabétique du caractère :

    >>> ord('R') - ord('A')
    17
  • puis on ajoute 13 à ce rang et on prend le reste dans la division euclidienne par 26 :

    >>> (ord('R') - ord('A') + 13) % 26
    4
  • enfin on retrouve le rang du caractère associé au rang alphabétique calculé :

    >>> chr(ord('A') + 4)
    'E'

Écrire une fonction rot13(chaine) qui chiffre ou déchiffre la chaîne (en majuscules ou convertie en majuscules avec chaine.upper()) passée en paramètre, avec l’algorithme rot13.

Exercice 3

  1. Sur une page web qui s’affiche sur notre navigateur on peut lire :

    « En conséquence, l’Assemblée Nationale reconnaît et déclare, en présence »

    Quelle peut être la cause des affichages étranges de cette page ?

  2. Le code ASCII permet de représenter en binaire les caractères alphanumériques. Quel est son principal inconvénient ?

Exercice 4

  1. Parmi les caractères ci-dessous, lequel ne fait pas partie du code ASCII ?
  2. Laquelle de ces affirmations concernant le codage UTF-8 des caractères est vraie ?
  3. Quel est un avantage du codage UTF-8 par rapport au codage ASCII ?

Exercice 5

En Python, pour saisir directement un caractère à partir de son point de code Unicode, on peut utiliser des séquences d’échappement spéciales : ‘\uxxxx’ si le point de code peut s’écrire avec 4 chiffres hexadécimaux, ou ‘\Uxxxxxxxx’ s’il faut plus de quatre chiffres, en remplissant par des 0 à gauche les positions vides sur les huit possibles.

  1. Tester l’instruction ci-dessous dans une console Python :

    print("\U0001f600")
  2. Écrire un code Python qui affiche tous les caractères dont le point de code est compris entre U+1F600 et U+1F64F sur des lignes de 16 caractères par colonne.