Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parClaire Leblanc Modifié depuis plus de 9 années
1
1
2
Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2
3
3 Définition du Spoon
4
4 Spoon Origine du langage Le langage Spoon est équivalent au brainfuck mais avec des mots constitués de 0 et 1.
5
5 Instructions Définition du Spoon
6
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é.
7
7 001010sortie de l'octet pointé (valeur ASCII). 0010110 entrée d'un octet dans le tableau à l'endroit où est positionné le pointeur (valeur ASCII). 00100 saute à l'instruction après le 0011 correspondant si l'octet pointé est à 0. 0011 retourne à l'instruction après le 00100 si l'octet pointé est différent de 0.
8
00101110Sortie de tout le tableau mémoire. 00101111Fin immédiate du programme Il existe deux instructions de plus que pour le brainfuck... Ce qui simplifie grandement l'écriture des programmes !!
9
9 Comprendre avec le C Instructions Définition du Spoon
10
10 Chaque instruction a son équivalent en C SpoonC 010 ptr++; 011 ptr--; 11 (*ptr)++; 000 (*ptr)--; On comprend ainsi beaucoup mieux …
11
001010 putchar(*ptr); 0010110 (*ptr) = getchar(); 00100 while(*ptr) { 0011 }
12
12 Comprendre avec le C Instructions Hello Word ! Définition du Spoon
13
13 Un premier programme : Le traditionnel « Hello Word ! » 1111111111 00100Boucle initiale qui affecte des valeurs utiles au tableau 010111111101011111111110101110101011011011011000 0011 à la sortie de la boucle le tableau contient: 01011001010 'H' = 72 (70 plus 2) 0101001010 'e' = 101 (100 plus 1) 1111111001010 'l' = 108 (101 plus 7) 001010 'l' = 108 111001010'o' = 111 (108 plus 3) 01011001010 espace = 32 (30 plus 2) 011011111111111111111001010 'W' = 87 (72 plus 15) 010001010 'o' = 111 111001010 'r' = 114 (111 plus 3) 000000000000000000001010 'l' = 108 (114 moins 6) 000000000000000000000000001010 'd' = 100 (108 moins 8) 0101001010 '!' = 33 (32 plus 1) 010001010 nouvelle ligne = 10 Attention : Tout ce qui n’est pas une instruction … …est un commentaire !
14
14 Le programme peut donc être écrit ainsi : 1111111111001000101111111010111111111101011101010110110110110000011010110010100101001010111111100101000101011100 1010010110010100110111111111111111110010100100010101110010100000000000000000000010100000000000000000000000000010 100101001010010001010 En enlevant tout commentaires parasites !! Le code gagne en lisibilité et apparaît sous sa forme la plus belle aux yeux du programmateur !
15
15 Comprendre avec le C Instructions Hello Word ! Combinaisons d’instructions Définition du Spoon
16
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
17 Remise à zéro de l'octet pointé L'octet est décrémenté (boucle 00100 0011) jusqu'à ce que sa valeur ait atteint 0. 001000000011 Entrée/Sortie d'un caractère 0010110001010 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). 00101100010000101000101100011
18
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. 01000101100010000101001000101100011 Addition 0010000001010110011 Ce code ajoute l'octet courant (en le détruisant, il est donc remis à 0) à l'octet suivant.
19
19 Comprendre avec le C Instructions Hello Word ! Combinaisons d’instructions Instructions conditionnelles Définition du spoon
20
20 Les instructions conditionnelles du spoon correspondent au bloc « if » du C Un moyen simple d’écrire un bloc if est : 01000100code0110011011001000100011 Voyons maintenant plus en détail ce bloc …
21
21 Si on a besoin de faire une condition après laquelle le code s'arrête, on peut se contenter de "01000100code0110011", puisque la partie "011001000100011" 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 (001000100011 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 001000100011 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
22 Préparer le prochain cours Comprendre avec le C Instructions Hello Word ! Combinaisons d’instructions Instructions conditionnelles Définition du spoon
23
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)
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.