1
Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2
3 Définition du Spoon
4 Spoon Origine du langage Le langage Spoon est équivalent au brainfuck mais avec des mots constitués de 0 et 1.
5 Instructions Définition du Spoon
6 En spoon, il n’y a que 8 instructions, dont voici les significations : 010incrémente (augmente de 1) le pointeur. 011décrémente (diminue de 1) le pointeur. 1 incrémente l'octet du tableau sur lequel est positionné le pointeur (l'octet pointé). 000décrémente l'octet pointé.
sortie de l'octet pointé (valeur ASCII) entrée d'un octet dans le tableau à l'endroit où est positionné le pointeur (valeur ASCII) saute à l'instruction après le 0011 correspondant si l'octet pointé est à retourne à l'instruction après le si l'octet pointé est différent de 0.
Sortie de tout le tableau mémoire Fin immédiate du programme Il existe deux instructions de plus que pour le brainfuck... Ce qui simplifie grandement l'écriture des programmes !!
9 Comprendre avec le C Instructions Définition du Spoon
10 Chaque instruction a son équivalent en C SpoonC 010 ptr++; 011 ptr--; 11 (*ptr)++; 000 (*ptr)--; On comprend ainsi beaucoup mieux …
putchar(*ptr); (*ptr) = getchar(); while(*ptr) { 0011 }
12 Comprendre avec le C Instructions Hello Word ! Définition du Spoon
13 Un premier programme : Le traditionnel « Hello Word ! » Boucle initiale qui affecte des valeurs utiles au tableau à la sortie de la boucle le tableau contient: 'H' = 72 (70 plus 2) 'e' = 101 (100 plus 1) 'l' = 108 (101 plus 7) 'l' = 'o' = 111 (108 plus 3) espace = 32 (30 plus 2) 'W' = 87 (72 plus 15) 'o' = 'r' = 114 (111 plus 3) 'l' = 108 (114 moins 6) 'd' = 100 (108 moins 8) '!' = 33 (32 plus 1) nouvelle ligne = 10 Attention : Tout ce qui n’est pas une instruction … …est un commentaire !
14 Le programme peut donc être écrit ainsi : En enlevant tout commentaires parasites !! Le code gagne en lisibilité et apparaît sous sa forme la plus belle aux yeux du programmateur !
15 Comprendre avec le C Instructions Hello Word ! Combinaisons d’instructions Définition du Spoon
16 Le spoon permet la création d’instructions plus complexes en associant des instructions simple : -Remise à zéro de l’octet pointé -Entrée Sortie d’un caractère -Boucle simple -Manipulation de pointeur -… et bien plus encore !
17 Remise à zéro de l'octet pointé L'octet est décrémenté (boucle ) jusqu'à ce que sa valeur ait atteint Entrée/Sortie d'un caractère Affiche à l'écran un caractère entré au clavier. Boucle simple Boucle affichant les caractères entrés au clavier. La fin de la saisie est ici signalée par un 0 (les implémentations peuvent différer sur ce point)
18 Manipulation de pointeur Une version améliorée de la boucle précédente, dans laquelle les caractères saisis par l'utilisateur sont stockés dans un tableau en vue d'une utilisation future, en déplaçant le pointeur à chaque fois Addition Ce code ajoute l'octet courant (en le détruisant, il est donc remis à 0) à l'octet suivant.
19 Comprendre avec le C Instructions Hello Word ! Combinaisons d’instructions Instructions conditionnelles Définition du spoon
20 Les instructions conditionnelles du spoon correspondent au bloc « if » du C Un moyen simple d’écrire un bloc if est : code Voyons maintenant plus en détail ce bloc …
21 Si on a besoin de faire une condition après laquelle le code s'arrête, on peut se contenter de " code ", puisque la partie " " sert uniquement à mettre le pointeur, à l'état final, sur le deuxième octet dans les deux cas. "010" : on met le pointeur sur n Si n est égal à 0, la boucle ne s'exécute pas et le pointeur est toujours sur n, on revient alors en arrière ("011", on est alors sur le 2ème octet) puis la boucle ne s'exécute pas puisque nous sommes sur le 0 ( revient à dire "va sur le premier octet nul en partant de l'octet pointé inclus"). Si n est différent de 0, la boucle s'exécute et le code aussi, le pointeur revient alors sur le 2ème octet et la boucle s'arrête, puisque cet octet est égal à 0. Le pointeur est donc sur le 2ème octet. On revient ensuite en arrière ("010"), donc sur le premier octet (égal à 1) puis, comme dit, la boucle emmène le pointeur sur le premier octet nul suivant l'octet pointé inclus, or le premier est différent de 0 et le second égal à 0, ce qui amène le pointeur sur le deuxième octet.
22 Préparer le prochain cours Comprendre avec le C Instructions Hello Word ! Combinaisons d’instructions Instructions conditionnelles Définition du spoon
23 A travailler : -Commencer à voir les macro-définition du spoon -Voir les opérations mathématique (addition et multiplication) -Réviser ce cours (contrôle en fin de séance)