variables locales non initialisees

Utilisation de Xcas

Modérateur : xcasadmin

parisse
Messages : 5744
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

variables locales non initialisees

Message par parisse » lun. févr. 18, 2013 2:14 pm

Actuellement, les variables locales non initialisees explicitement le sont implicitement a 0. Or c'est souvent une source d'erreur, aussi je propose de changer le comportement pour les versions >= a 1.1: toutes les variables locales seraient initialisees implicitement a une valeur d'erreur qui serait "Unitialized local variable <nom_de_la_variable>", est-ce que ca pose probleme a quelqu'un?

Notez que les variables locales peuvent toujours etre initialisees a la creation, par ex:

Code : Tout sélectionner

local j:=0;
local k:=1;
ou (attention aux parentheses dont la presence est indispensable a cause des priorites respectives de := et ,)

Code : Tout sélectionner

local (j:=0),(k:=1);
mais cette utilisation est dangereuse, car les variables locales sont initialisees simultanement et ont encore la valeur hors de la fonction a ce moment-la, donc

Code : Tout sélectionner

f(x):={ local j:=x*x; local k:=j*j; return k; } 
f(x) renverra j*j et pas x^4 quelle que soit la valeur de x.
Il est beaucoup plus sur de declarer les variables locales, et de les initialiser apres declaration.

Alek
Messages : 111
Inscription : jeu. oct. 28, 2010 1:20 pm

Re: variables locales non initialisees

Message par Alek » mar. févr. 19, 2013 12:39 pm

Ce n'est pas une question de voter pour ou contre, mais je suis tout à fait pour ce changement !
(je pense que c'est une bonne pratique d'initialiser explicitement, surtout pour les débutants).
A.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: variables locales non initialisees

Message par frederic han » mar. févr. 19, 2013 12:53 pm

L'erreur la plus frequente que j'ai constate est la suivante:

penser que apres un

local j;

j vaut: 'j' comme ca le fait avec les variables globales non initialisees.

J'aurai donc ete plus tente par une initialisation a 'j'

Fred

parisse
Messages : 5744
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: variables locales non initialisees

Message par parisse » mar. févr. 19, 2013 2:43 pm

Je pense que indiquer l'erreur c'est bien. Sinon, si j est initialisee a 'j' et que j est incremente dans un tantque on va avoir un probleme...
Dans quel cas aurais-tu besoin de variables locales formelles? Je t'invite a tester la version linux testing, si par exemple tu veux utiliser une variable muette locale dans la definition d'une fonction, ca a l'air de marcher meme si elle est non initialisee.
P.S.: on peut bien sur toujours purger une variable locale pour en faire une variable formelle.

Répondre