Généralisation des opérateurs logiques

Les opérateurs logiques pouvant être appliqués à des variables binaires , valant 1 ou 0, s'appliqueront aussi à toute information codée sous forme binaire.
Nous allons voir dans ce TP un exemple de généralisation de l'opérateur Ou-Exclusif.
Ce sera également l'occasion de revoir l'utilisation de formules de calcul dans un tableur.
 
Rappel :opérateur Ou Exclusif (Ou-Ex ou Xor) : A Ou-Ex B est vrai si A est vrai mais pas B, ou si B est vrai mais pas A

     
  1. Préparation :

      Lancer le tableur 123.
      Ouvrir le fichier fonc_def.123 : ce classeur contient la définition d'un certain nombre d'opérateurs dérivées du Ou Exclusif.
      Fichier 123
      Descriptif et définitions des fonctions utilisées
      Vue de la feuille de calcul (image)
      Vous ne pouvez les utiliser que lorsque ce classeur est ouvert, mais vous pouvez très bien travailler dans un autre classeur.
      Ces opérateurs sont décrites dans la feuille B, on peut travailler dans la feuille A.
      N'effacez pas la cellule A1 de la feuille A : elle contient un texte à décrypter !

     
  2. Opérateur @Ou-Exclu(v1;v2)

       
    1. Utilisation avec des digits binaires.
      Utiliser l'opérateur @Ou-Exclu(v1;v2) pour obtenir dans les tableaux 1 et 2, une table de vérité de l'opérateur A OU-EX B, puis celle de (A OU-EX B) OU-EX B.

      Que peut-dire de A et S2 dans le tableau 2 ? Enregistrer le classeur
       
    2. Utilisation avec des entiers

         
      1. Travail préliminaire
        Le tableau 3 contient des formules de calcul permettant de convertir en base 2 le nombre écrit dans I11 en base 10, à condition qu'il soit inférieur à 256.
        Chacune des cellules A11 à H11 contient un digit binaire du nombre en base 2.
        De même le nombre écrit en base 10 dans I12 sera converti en base 2 dans les cellules A12à H12 :
        Ecrire dans I10 une formule permettant d'obtenir la valeur en base 10 d'un octet dont on a écrit les digits binaires dans les cellules A10 à H10 .
        Enregistrer le classeur.
        Utiliser provisoirement les cellules à droite du tableau 3.
         
      2. Observations :
        Pour l'opérateur @OuExclu(v1;v2), v1 et v2 doivent être des valeurs numériques, mais pas forcément composées d'un seul digit binaire.
        Calculer :
        • @Ouexclu(15;8)=
        • @Ouexclu(15;9)=
        • @OuExclu(14;9)=
        • @OuExclu(13;7)=
          (Pour aller plus vite on peut par exemple écrire dans L12 : @ouexclu(L10;L11) , puis écrire dans L10 et L11 les diverses valeurs).

         
      3. Analyse :
        On travaille de nouveau dans le tableau 3.

        • Utiliser @OuExclu pour effectuer dans la ligne 13 l'opération Ou-Ex entre les digits de v1 et de v2 de même position comme dans le schéma ci-contre.
          On obtient dans A13..H13 huits digits binaires formant un octet.
        • Recopier dans I13 la formule de calcul permettant de cet octet en base 10 .
        • Effectuer dans la cellule I14 l'opération ou-ex entre le contenu de I11 et celui de I12, en utilisant @OuExclu.
        • Comparer I13 et I14 pour diverses valeurs de I11 et I12 (inférieures à 256 ! ).
          Enregistrer le tableau.

         
      4. Généralisation des propriétés du Ou Exclusif
        Remarque : @OuExclu peut être utilisé avec tous les nombres entiers, inférieurs ou supérieurs à 256.
        Quel est le résultat de @OuExclu(v1;0) ?
        Quel est le résultat de l'opération @OuExclu entre deux entiers égaux ?
        Si v=@OuExclu(v1;v2) , que vaut @ouExclu(v;v1) ?
        Que vaut @OuExclu(v;v2) ?
         
      5. Application au cryptage :
        Supposons qu'on veuille communiquer de manière codée une valeur A (par exemple A=245) à un correspondant.
        On choisit avec lui, à l'avance, une clé de décodage, par exemple la valeur 321.
        On effectue l'opération Ou-Ex entre A et la clé, puis on transmet le résultat (ici 436) au correspondant, qui n'a plus qu'à effectuer lui aussi l'opération Ou-Ex entre le résultat et la clé pour obtenir A.
        Ce codage est très simple mais un espion qui ignore la clé ne peut retrouver la valeur de A.
        Si le message à transmettre est une suite de valeurs numériques, la clé pourra également être une suite de valeurs numériques, pour plus de sécurité.

     
  3. Application à des caractères : opérateur @CarOuExclu

      Etant donné qu'à chaque caractère correspond un code numérique (code ASCII) on peut également envisager d'effectuer une opération Ou Exclusif entre des caractères !
      L'opérateur @CarOuExclu(c1;c2) le fait pour vous : elle convertit c1 et c2, qui doivent être des caractères , en leurs codes ASCII, effectue un Ou Exclusif entre ces codes, puis convertit le résultat en un caractère.
    1. Par exemple que donne @CarOuExclu("à";"%") ?
      Remarques : Si les deux caractères ont des codes proches (par exemple deux lettres minuscules, ou deux majuscules...) le résultat est un caractère non imprimable qui s'affiche comme un trait noir vertical ou comme un carré vide selon la police de caractères utilisée.
      Un @carOuExclu entre une lettre et le signe 'espace' donne la même lettre, mais en majuscule ou en minuscule selon que la lettre initiale était en minuscule ou en majuscule.
    2. Application :
      Dans le tableau 4, écrivez une clé de 5 caractères (de préférence autres que des lettres majuscules) dans la ligne 20 (un caractère par case).
      Dans la ligne 21, effectuez l'opération Ou-Exclusif entre chaque lettre du message et chaque lettre de la clé, à l'aide de l'opérateur @CarOuExclu.
      Recopiez le message codé obtenu dans le tableau 5 (un caractère par case) .

      Remarque importante : vous pouvez faire un copier-coller mais il faut faire un "collage spécial / formules en tant que valeurs" (par le menu Edition ou le menu surgissant) pour recopier les caractères du message codé, et non la formule de calcul. Vous pouvez également le saisir au clavier, mais il ne faut par oublier de faire précéder de ' ou " (apostrophe simple ou double) les chiffres et les caractères spéciaux : + - * ' / @ $ # & " .

      Copiez dans J23..N23 la formule permettant d'effectuer l'opération Ou-Exclusif entre chaque lettre du message codé et chaque lettre de la clé, supposée écrite dans J22..N22.
      Ecrivez la clé dans J22..N22 ....
      Sauvegarder le classeur.
    3. Faites d'autres essais avec d'autres messages et d'autres clés.
      Il est bien sûr recommandé d'échanger messages et clés avec d'autres groupes!

     
  4. Application à un texte : @chaineOuExclu


      L'opérateur @chaineOuExclu(chaine;masque) permet d'effectuer des cryptages/décryptages plus rapidement mais elle est un tout petit peu plus délicate d'utilisation : bien lire le descriptif dans la feuille B du classeur.
      Contrairement aux précédentes elle n'est pas commutative : chaine doit être le message à crypter et masque la clé.
      Utilisez cette opérateur pour décrypter le message inscrit en A1 : la clé est le mot "clé " en minuscules
      Message :

 
© 2003 Scientillula.net