tsguide.refl.fr/content/docs/playing/exercices.md

69 lines
1.9 KiB
Markdown

---
title: "Exercices"
weight: 5
---
# Exercices
## Chemins
Ajouter des étoiles aux constellations suivantes de sorte à obtenir `ok` après
exécution.
1. `-1 ok;`
2. `-1; +2;`
3. `-1 ok; -2 +3;`
4. `-1 ok; -2 +3 ok;`
5. `+f(a) +f(b); +g(a); @+g(b);`
## Altération de mémoire
Considérons la constellation suivante représentant des registres dans lesquels
on peut stocker des données (ils sont tous initialisés à `0`) :
```
' initialisation
+ia(0); +ib(0);
@-ra(X) +a(X); ' registre a
@-rb(X) +b(X); ' registre b
```
Pour chaque question, vous pouvez soit ajouter des étoiles à la constellation
de départ ou modifier celles que vous avez ajoutées.
1. Comment relier les étoiles d'initialisation de sorte à initialiser le
registre `a` à `0` ?
2. Comment afficher la valeur de `a` et ainsi obtenir `a(0)` en sortie ?
3. Comment mettre à jour `a` à la valeur `1` ?
4. Comment copier la valeur de `a` dans `b` et afficher `b` ?
5. Comment supprimer le registre `b` et le rendre inutilisable ?
## Portes logiques
On veut simuler des portes logiques par des constellations calculant des
fonctions sur `{0,1}`.
1. Ecrire une constellation calculant la négation de telle sorte à ce qu'elle
produise `1` en sortie lorsqu'ajoutée à l'étoile `@-not(0 X) X;` et `0`
lorsqu'ajoutée à `@-not(1 X) X`.
2. Comment afficher la table de vérité de la négation avec une seule étoile,
de sorte à ce qu'on obtienne en sortie `table_not(0 1); table_not(1 0);` ?
3. Ecrire de deux manières différentes des constellations calculant la
conjonction et la disjonction et afficher leur table de vérité de la même façon
que pour la question précédente.
4. Utiliser la disjonction et la négation pour afficher la table de vérité
de l'implication sachant que `A => B = not(A) \/ B`.
5. Utiliser l'implication et la conjonction pour afficher la table de vérité
de l'équivalence logique sachant que `A <=> B = (A => B) /\ (B => A)`.