presentation

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:17] rootpresentation [2026/08/02 12:35] (Version actuelle) – [Structures de contrôles] root
Ligne 53: Ligne 53:
 include "calcul.w" include "calcul.w"
 ; ;
- 
 </code> </code>
  
-Les appels de bibliothèque et 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).
Ligne 63: Ligne 62:
  
 Tous les passages de paramètres se font par référence : dans les sous-programmes appelées, les accès aux variables agissent sur la variable origine. Tous les passages de paramètres se font par référence : dans les sous-programmes appelées, les accès aux variables agissent sur la variable origine.
 +
  
 ==== Types de données ==== ==== Types de données ====
Ligne 72: Ligne 72:
 declare x, y, tmp declare x, y, tmp
 ; ;
 +
  
 </code> </code>
Ligne 104: Ligne 105:
 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 ====
Ligne 135: Ligne 140:
   * 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 =====
  • presentation.1785183434.txt.gz
  • Dernière modification : 2026/07/27 20:17
  • de root