[users-fr] Passer des arguments par référence à une fonction écrite en scilab.

Adrien Vogt-Schilb vogt at centre-cired.fr
Lun 4 Juin 14:30:09 CEST 2012


Oups, désolé.
Global ne marche effectivement pas avec l'optimisation


On 04/06/2012 14:27, Adrien Vogt-Schilb wrote:
> Bonjour
>
> global est votre ami:
>
> function update_a()
>     global a
>     a =a +1
> endfunction
>
>
> global a
>
> a= 0
> update_a()
> a
> update_a();
> update_a();
> update_a();
> update_a();
>
> a
>
>
>
> à lire:
>
> help global
> http://wiki.scilab.org/howto/global%20and%20local%20variables
>
> On 01/06/2012 22:56, Binoyte wrote:
>> Bonjour,
>>
>> je voudrais savoir si il est possible de passer les arguments par 
>> référence a une fonction écrite en Scilab. En gros je cherche une 
>> analogie à l'écriture C++ suivante :
>>
>> void ma_fonction(struct & parametre)
>> {
>>
>>     parametre.propriete = ....;
>>
>> }
>>
>>
>> En Scilab je ne trouve pas trop d'autres solutions que d'écrire :
>>
>> function  this = ma_fonction (parametre)
>>
>>     this = parametre;
>>     this.propriete = .....
>>
>> endfunction
>>
>>
>> Le problème c'est qu'avec la version Scilab on fait d'abord une copie 
>> de la variable, ça prend du temps et beaucoup de ressources. D'autant 
>> qu'ensuite, dans mon programme, les fonctions sont appelées de 
>> nombreuses fois vue que je lance par la suite des fonctions 
>> d’optimisation. J'utilise des structures qui décrivent les composants 
>> mécaniques d'un système. L’optimisation peut faire varier le nombre 
>> de composants. Dans ce cas je ne pense pas pouvoir utiliser les 
>> variables globales, en tout cas, pas selon l'exemple ci- après :
>>
>> function  ma_fonction (parametre)
>>
>>     global parametre;
>>
>>     parametre.propriete = .....
>>
>> endfunction
>>
>> //************
>>
>> global Monsieur;
>> Monsieur.Age = 31;
>>
>> ma_fonction(Monsieur);
>>
>> Je vous remercie par avance de vos conseils.
>>
>> Cordialement,
>>
>

-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.scilab.org/pipermail/users-fr/attachments/20120604/f727914f/attachment.htm>


Plus d'informations sur la liste de diffusion users-fr