| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| presentation [2026/07/27 20:21] – [Include et appels externes] root | presentation [2026/08/02 12:35] (Version actuelle) – [Structures de contrôles] root |
|---|
| include "calcul.w" | include "calcul.w" |
| ; | ; |
| |
| |
| </code> | </code> |
| |
| Les appels de bibliothèque et [[:presentation:appel_de_methode|méthode ]]se font avec les instructions ''do'' ''call'' ''invoke'' : | Les appels de bibliothèque et [[#appel_de_methode|méthode]] se font avec les instructions ''do'' ''call'' ''invoke'' : |
| |
| * appel de sub/méthode d'objet : ''do <var>(param1, param2, …)'', écrits en W et déclarés dans le même source que le source courant (fichiers //include// compris). | * appel de sub/méthode d'objet : ''do <var>(param1, param2, …)'', écrits en W et déclarés dans le même source que le source courant (fichiers //include// compris). |
| declare x, y, tmp | declare x, y, tmp |
| ; | ; |
| | |
| |
| </code> | </code> |
| let h.x = 10 | let h.x = 10 |
| let h.y = 20 | let h.y = 20 |
| | |
| |
| </code> | </code> |
| | |
| | L'instruction ''let'' permet d'effectuer des opérations (liste des [[:reference#operateurs|opérateurs ]]et leur priorité) et d'affecter le résultat à la variable indiquée. De nombreuses [[:reference#fonctions|fonctions ]]sont disponibles dans les expressions. |
| | |
| |
| ==== Exceptions ==== | ==== Exceptions ==== |
| * boucle ''loop-endloop'' : boucle inconditionnelle (infinie). La sortie se fait avec les instructions ''break'' et ''breakon <condition>'', à n'importe quelle endroit dans la boucle. De manière similaire, il est également possible de forcer le retour au début de la boucle avec les instructions ''continue'' et ''continueon <condition>'' | * boucle ''loop-endloop'' : boucle inconditionnelle (infinie). La sortie se fait avec les instructions ''break'' et ''breakon <condition>'', à n'importe quelle endroit dans la boucle. De manière similaire, il est également possible de forcer le retour au début de la boucle avec les instructions ''continue'' et ''continueon <condition>'' |
| * itérateur ''foreach-endfor'' : permet d'itérer de trois manières différentes selon le type de la variable itérée : | * itérateur ''foreach-endfor'' : permet d'itérer de trois manières différentes selon le type de la variable itérée : |
| * numérique : pour compter en boucle | * numérique : pour compter |
| * dynamic (chaîne) : pour extraire de manière séquentielle chaque champ | * dynamic (chaîne) : pour extraire de manière séquentielle chaque champ |
| * hashtable : pour lire la clé de chaque élément de la hashtable | * hashtable : pour lire la clé de chaque élément de la hashtable |
| | |
| |
| ==== Appel de méthode ==== | ==== Appel de méthode ==== |
| |
| Il y a un seul type de méthode, déclarée par ''sub-except-endsub'', avec la même structure que le programme principal. La portée est globale pour les noms de méthode simple. Les méthodes déclarées dans une hashtable sont //locales// à la hashtable. C'est également le fonctionnement des méthodes de classes et d'objets.Tous les paramètres sont passés par référence (maximum 8). Il n'y a pas de //fonction// retournant une valeur : pour renvoyer des valeurs avec les méthodes, il faut utiliser un des paramètres de la méthode. | Il y a un seul type de méthode, déclarée par ''sub-except-endsub'', avec la même structure que le programme principal. La portée est globale pour les noms de méthode simple. Les méthodes déclarées dans une hashtable sont //locales// à la hashtable. C'est également le fonctionnement des méthodes de classes et d'objets.Tous les paramètres sont passés par référence (maximum 8). Il n'y a pas de //fonction// retournant une valeur : pour renvoyer des valeurs avec les méthodes, il faut utiliser un des paramètres de la méthode. |
| | |
| | A l'intérieur d'une méthode, comme dans le programme principal, il est possible de forcer la fin de la méthode (du programme principal) et donc le retour à l'appelant, avec les instructions ''return'' et ''returnon <condition>'' |
| | |
| | |
| | ==== Interactions console ==== |
| | |
| | * affichage dans la console : les instructions ''echo <expression>'' et ''echonl <expression>'' envoient le résultat de l'expression dans la console, comme le fait ''printf'' en C. ''echonl'' écrit à la fin de l'expression un saut de ligne (''\n''), ce que ne fait pas ''echo''. |
| | * lecture depuis la console : l'instruction ''input <variable>'' permet de récupérer dans la variable les caractères tapés au clavier dans la console. La variable est de type //dynamic//. |
| | |
| | ==== Debugger ==== |
| | |
| | Le langage dispose d'un debugger intégré à la machine virtuelle qui exécute le pcode W. Le mode s'active en exécutant un programme w avec l'option ''-d''. Il peut aussi être déclenché pendant l'exécution d'un programme, en envoyant un signal au processus, différemment sous Linux et Windows (**A PRECISER**). Le debugger dispose de nombreuses [[:debugger|commandes ]](pas à pas, points d'arrêt, visualisation des variables,etc.). |
| |
| ===== Liste des instructions ===== | ===== Liste des instructions ===== |