Les structures de contrôle permettent de traiter
conditionellement un bloc d'instructions ou de les traiter répétitivement.
Les structures des langages classiques ont été redéfinies en Scriptol pour
éliminer les causes d'erreurs fréquentes, la plus commune étant la boucle
sans fin, et pour appliquer le concept de "pattern-matching" dont les programmeurs
apprécient la lisibilité qu'elles apportent...
Les structures de contrôle sont:
if
if normal.
if une instruction.
if composite.
for
for normal.
for une instruction.
- options: in intervalle, in séquence.
scan
by fonction.
scan une instruction.
scan balisé.
while
while normal.
while une instruction.
- options: let, forever
do while
normal.
case / else / always.
- option: forever.
do until
enum
simple enum.
enum dictionnaire.
Scriptol a une syntaxe différente pour les structures de contrôle d'une
ligne, ou multi-lignes.
Structure multi-lignes
Une structure de contrôle a généralement la forme:
nom-structure expression [:]
... instructions ... /nom-structure
Le symbole deux-points est optionel, sauf si une instruction est mise
sur la même
ligne. Toutes les sortes de structures peuvent être imbriquées l'une dans
l'autre. Chaque instruction dans le corps d'une structure est terminée,
soit par la fin de ligne, soit par un point-virgule.
Structure à Instruction unique
Un structure de contrôle d'une seule instruction a la forme:
mot-clé expression let instruction
ou mot-clé expression ? instruction
ou mot-clé expression instruction (commençant par un mot-clé).
Il n'y a pas d'autre marqueur de fin que la fin de ligne. L'instruction
est basique et ne peut être un autre construct.
L'instruction "let" est toujours la dernière partie d'une structure de
contrôle et peut être la seule.
Le symbole "?" est simplement une abbréviation de "let". Il est requis
si l'instruction est un assignement ou un appel de fonction, mais optionel
si un mot-clé le suit.
Si le mot-clé "else" ou "let" complète la structure de contrôle
sur la même ligne,
un point-virgule doit terminer l'instruction pour la séparer du
mot-clé.
Pourquoi la forme monoligne
Souvent l'instruction "if" est utilisée pour exécuter sous condition
une instruction unique, comme break, print, etc... et la syntaxe devrait
être simplifiée alors. Et aussi, quand une instruction termine le traitement,
il ne semble pas naturel que le code ajoute quelque chose après.
Par exemple: if condition : break; /if
ou if condition : return; /if
Le /if semble inutile puisqu'on ne l'atteint pas, aussi Scriptol
permet de le supprimer, grâce à la syntaxe d'instruction unique qui utilise
le mot-clé let.
Le mot let signifie Last, Execute, Terminate (dernier, exécute,
termine).
L'instruction let est toujours la dernière partie d'une structure de contrôle.
Quand let est suivi d'un mot-clé (break, print, ...) il peut être
omis, (pas à la fin d'un while).
Quand la condition est suivie par let plutôt que par : ou une fin
de ligne, puisque let est toujours la dernière instruction, cela
signifie que le corps de la structure est une instruction unique, et ne
peut avoir plus d'une instruction.
Cette règle s'applique à toutes les structures de contrôle sauf do
qui n'a pas de condition au début.
Syntaxes:
if condition let instruction if condition let instruction; else instruction while condition let instruction; let incrementing while condition let instruction for range let instruction scan arrays let instruction
Exemples |
if
x = 5 let y = a + 3 if x < 10 break if (x + y) = 0 print
"some text" if a < 10 print
"less"; else print "more" for w in
array1 print w scan a,b let
a[] * b[] |
Si vous avez déja utilisé d'autres langages de programmation, vous serez
surpris par les différences entre leurs structures de contrôles et la
puissance de celles de Scriptol. La structure if, non seulement combine
la puissance du if et du swith de C++ par exemple, mais elle permet aussi
de tester des cas de types variés, et d'utiliser des opérateurs différents.
Les structures de Scriptol on été définies pour une programmation plus
intuitive et pour traduire directement la pensée en programme.
Exercices |
1) Soit une structure classique:
int i
for i in 1 .. 3
i * 2
/for
Convertissez la en une structure d'une ligne.
2) Faites de même avec la structure:
int i
for i in 1..3
print i * 2
/for
Réponses |
|