Commande SoitValeur

SoitValeur( <Booléen b>, <0|1> )

Affecte au booléen b la valeur 0 ou 1. Vous pouvez aussi utiliser SoitValeur( <Booléen b>, <false|true> )

SoitValeur( <Objet A>, <Objet B> )

Si A est un objet libre ou un point appartenant à un chemin ou une région, sa valeur prend la valeur actuelle de B (i.e. A ne changera pas de valeur si B est ensuite modifié).

SoitValeur( <Liste L>, <Nombre n >, <Objet O> )

Affecte au n ème élément de la liste L la valeur actuelle de l’objet O . Le nombre n est au plus égal à Longueur(L)+1.

SoitValeur( <Liste déroulante>, <Nombre n > )

Définit n comme position sélectionnée dans la liste déroulante.

Commandes Si et SoitValeur dans les Scripts

Dans de nombreux langages de programmation, Si signifie si la condition est vraie fait ceci ; sinon fait cela.

Dans GeoGebra les arguments de Si ne sont pas des commandes, mais des valeurs, dont une devient la valeur du résultat.

Par conséquent, si vous désirez par exemple que b prenne la valeur 2 si la condition a > 2 est réalisée, la méthode correcte pour ce faire est SoitValeur(b,Si(a>2,2,b)). Toute autre manière d’imbriquer SoitValeur et Si est incorrecte.

SoitValeur et objets libres

Note Idée :

Vous avez une liste de points, liste1=\{A,B,C}, donc un objet dépendant, vous voulez, par script, lui ajouter un point D.

La commande SoitValeur sera sans effet sur liste1, il vous faut copier cette dernière en objet libre par la Commande CopierObjetLibre

Ainsi, exemple de script :

liste2=CopierObjetLibre(liste1)

SoitValeur(liste2,4,D).

Note Idée :

Dans un script, privilégiez toujours la commande SoitValeur à l’affectation par le signe =.

pour i libre, j libre ou non, les commandes i = 4, i = i + 1, i = i + j

sont équivalentes à SoitValeur(i, 4), SoitValeur(i, i + 1) et SoitValeur(i, i + j)

(i reste libre, seule sa valeur est modifiée), i = j provoque une redéfinition.

Mais i = CopierObjetLibre(j) devrait fonctionner comme SoitValeur.

Une redéfinition est lente, surtout si il y a beaucoup d’objets qui dépendent de i. Cela entraînera de graves problèmes dans les scripts d’actualisation.