« Programmation LSE » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 278 :
 
'''SELON''' <expression> '''ALLER EN''' <#ligne1>[,<#ligne2>, ...] ['''SINON EN''' <#ligne>]
<blockquote>Selon la valeur de l'expression expression l'exécution continue à la ligne spécifiée par l'une des étiquettes, consistait en un numéro de ligne à l'origine. Si la valeur de l'expression est 0 c'est la première étiquette qui est prise, si elle vaut 1 alors c'est la seconde ainsi de suite. L'instruction optionnelle SINON permet de spécifier un branchement dans le cas ou la valeur de l'expression déborderaisdéborde des choix. Si on omet cette dernière l'exécution continuera sontson courcours normal à la Ligneligne suivante.</blockquote>
 
'''SI''' <expression booléenne> '''ALORS''' <bloc1> [ '''SINON''' <bloc2> ] '''FIN SI''' <br/>
<blockquote>Si l'expression booléenne <expression booléenne> est VRAI alors les instructioninstructions du bloc <bloc1> sont exécutées sinon ce sont cellecelles du bloc <bloc2> qui seront exécutées. Pour mettre plusieurs instructions dans une branche, on peut utiliser un bloc '''DEBUT'''...'''FIN''' comme jadis ou simplement ecrireécrire les instructions en les faisant suivre d'un séparateur ; <br/><br/><code>'''SI''' U=V '''ALORS''' U←0;V←255; '''SINON''' U←U+1;V←V-1; '''FIN SI'''</code>
</blockquote>
 
Ligne 288 :
'''EVALUER''' <expression1> ['''QUAND''' <expression1> <bloc>]...] '''QUAND AUTRE''' <bloc> '''FIN EVALUER'''
 
<blockquote>Compare la ou les expressions à la droite de EVALUER avec celle ou celles à la droite des QUAND et exécute le bloc d'instruction du premier QUAND dont les expressionexpressions correspondent à celles du EVALUER. Si aucune correspondance n'est trouvée alors c'est le bloc du QUAND AUTRE qui est exécuté.
 
'''EVALUER''' X
Ligne 301 :
'''FIN EVALUER'''
 
Pour évaluer si des conditions sont vraies ou fausses, il faut mettre en paramètre du '''ÉVALUER''' l'une des constantes booléennes ('''.VRAI.''' ou '''.FAUX.''') ainsi les expressions des instructions QUAND seront comparécomparées avec cette valeur. Par exemple :
 
'''EVALUER''' .VRAI.
Ligne 314 :
'''FIN EVALUER'''
 
Pour évaluer l'une après l'autre si une suite de conditions sont vraies ou fausses, il faut mettre '''EN CHAÎNE''' suite au '''ÉVALUER'''. Quand une expression est vraivraie alors le bloc QUAND est exécuté avant d'évaluer le QUAND suivant. Par exemple :
 
'''EVALUER EN CHAINE'''
Ligne 352 :
'''TANT QUE''' ''expression'' '''FAIRE''' ''bloc'' '''BOUCLER''' (LSE2000)
<blockquote>
Effectue les opérations comprises dans le bloc délimité par les mots-clefs '''FAIRE''' et '''BOUCLER''' tant que la valeur booléenne ''expression'' est vraivraie ou qu'une instruction '''FINIR''' est rencontrer.</blockquote>
 
'''FAIRE''' ''bloc'' '''BOUCLER''' (LSE2000)
<blockquote>Boucle sans fin qui peupeut être interrompue par un appel à '''FINIR'''. </blockquote>
 
'''FAIRE''' ''bloc'' '''TANT QUE''' 'expression'' (LSE2000)
<blockquote>Effectue les opérations comprises dans le bloc délimité par les mots-clefs '''FAIRE''' et '''TANT QUE''' tant que la valeur booléenne ''expression'' est vraivraie ou qu'une instruction '''FINIR''' est rencontrer.</blockquote>
 
'''FAIRE''' ''#ligne'' '''POUR''' ''var'' ←''expression'' [ '''PAS''' ''expression'' ] '''JUSQUA''' ''expression''<br/>'''FAIRE''' ''#ligne'' '''POUR''' ''var'' ←''expression'' [ '''PAS''' ''expression'' ] '''TANT QUE''' ''expression''
<blockquote>
Exécute en boucle la ou les instructions qui suivent cette ligne jusqu'à la ligne pointépointée par étiquette #ligne inclusivement ce, jusqu'à ce que les conditions de sortie de boucle soit atteintes. Cette boucle est là pour simplifier le portage du code ancien, il est préférable de l'éviter pour du nouveau code.<br/>
'''PAS''' indique le pas d'incrémentation de ''var'' (décrémentation si négatif) un pas de 0 provoque une boucle sans fin.<br/>
'''JUSQUA''' ''expression3'' indique la valeur que doit atteindre ''var'' pour terminer la boucle<br/>
Ligne 376 :
 
'''BRISER QUAND''' <expression booléenne>(LSE2000)
<blockquote>Brise la boucle courante si l'expression <expression booléenne> est vraivraie.</blockquote>
 
'''RESULTAT''' <expression>
Ligne 394 :
 
'''ERREUR''' (LSE2000)
<blockquote>Défini un auditeur pour toutetoutes les exceptionexceptions lancerlancées à l'intérieur du bloc.</blockquote>
 
=== Lancement des exceptions ===
Ligne 404 :
'''PROCEDURE &'''<identificateur>(<liste de params> ) [<type>][ '''LOCAL''' <params locaux>] (LSE2000)<br/>
 
<blockquote>Un paramètre peut être passé par référence, par valeur ou par descripteur. Le paramètre formel est passé par valeur si s'il figure dans la liste suivant le mot-clef LOCAL comme dans les versions précédentes de LSE. Mais il est aussi possible de déclarer un paramètre comme local en lui ajoutant # en préfixe. Sinon par défaut les paramètres sont passés par référence.<br><br>

On sort d'une procédure en invoquant '''RETOUR''' ou encore '''RESULTAT''' si cette dernière doit retourner une valeur. La valeur de retour est établie selon la syntaxe: '''RESULTAT''' <expression>. Le type de la valeur de retour est spécifié à la suite des paramètres dans la déclaration de la procédure.
 
'''PROCEDURE''' &sontEgaux('''ENTIER''' A, '''ENTIER''' B, '''ENTIER''' C) '''BOOLEEN LOCAL''' A,B
Ligne 426 ⟶ 428 :
 
=== Variable ===
Comme indiqué dans le chapitre sur les types il existe une type PROCEDURE qui permet de déclarer une variable désignant une procédure. Ce qui permet par exemple, de passer une procédure en paramètre à une autre, par exemple si nous avons la procédure &TRI_PYRAMIDALE on peut lui passer une procédure de comparaison en paramètre ce qui lui permettra de trier n'importe quoi.
 
La distinction entre une variable et unune procédure se fait par le fait que le nom de la variable est précédéeprécédé par un arobase (@) tandis que dans le cas d'une déclaration le nom de la procédure est précédéeprécédé par une esperluette (&). Lorsque l'on voudra invoquer une procédure désignée par une variable il suffira de précéder son nom par une esperluette.
 
<blockquote><code>&MaVariableProcédure</code></blockquote>
 
Voici un exemple d'utilisation d'une variable de type PROCEDURE :
 
<blockquote>
Ligne 445 ⟶ 447 :
</blockquote>
 
/!\ Attention il faut préalablement assigner la variable avant d'invoquer celle-ci !
 
== Fonctions intégrées ==
Ligne 506 ⟶ 508 :
== Programmation Orientée Objet ==
'''CLASSE'''
<blockquote>Type permettant de déclarédéclarer une classe.</blockquote>
<pre>
CLASSE maClasse
Ligne 526 ⟶ 528 :
 
'''ALE'''() Valeur aléatoire<br /><nombre> ← ALE(<nombre>)
Retourne une valeur une valeur « pseudo-aléatoire » , dépendante du parametre, est retournée. Entre 0.0 et 1.0 si arg = 0.
 
'''ALEE'''() Valeur aléatoire entiereentière (LSE2000)<br /><entier> ← ALE(<entier>)
Retourne une valeur une valeur « pseudo-aléatoire » , dépendante du parametre, est retournée. Entre 0 et 2^32 si arg = 0.
 
'''AROND'''() Valeur arrondie (LSE2000)<br /><nombre> ← ATG(<nombre>)<br />Retourne la valeur arrondie d'un nombre.
 
'''ATG'''() Arc tangente<br /><nombre> ← ATG(<nombre>)<br />Retourne la valeur de l'arc tangente de l'expression numérique « expression ».
 
'''ATT'''() Attention<br /><nombre> ← ATT()<br />Retourne normalement 0. Quand l'utilisateur tape Ctrl-A, ATT() retourne 1 (une fois), puis de nouveau 0, jusqu'à ce que l'utilisateur tape de nouveau Ctrl-A. Ça permet d'envoyer un signal traitable par le programme. (ESCape envoie un signal au système qui interrompt le programme).