[Squeak-fr] La boucle "FOR"

Dreyfuss Pierre-André (EDU) pierre-andre.dreyfuss at edu.ge.ch
Ven 22 Déc 22:11:15 UTC 2006


Bonjour

Pour les E-toys, la manière de gérer des boucles peut se faire de deux manières:

La programmation classique héritée de Logo est le script récursif avec condition d'arrêt mais qui a le gros inconvénient en cas d'erreur de programmation de planter Squeak et en tout cas sous windows rapidement tout le pc si la récursivité ne s'arrête pas !!!! car le PC ne tarde pas à manquer de mémoire et utiliser la mémoire virtuelle ce qui ralentit terriblement tout le PC !

Donc prudence et utiliser immédiatement alt/point pour arrêter les scripts en cours en cas de plantage.


La seconde méthode utilise le lancement et l'arrêt de scripts à l'aide des briques de la catégorie contrôle des scripts et d'une variable pour compter les répétitions,ou d'une condition qui arrête un script actif.

c'est le procédsé utilisé dans la brique joueson si collision des V-toys.

On met  10 dansa une variable compteur

On lance un script qui teste si la variable contient 0, 
  si oui on stop le script et on lance un script qui s'occupe de la suite.

Si non on décrémente la variable de 1


La fréquence du script activé est fixée à 10 fois par seconde (en cliquant sur l^horloge du script) Ainsi si la variable contuent 10 au départ, l'attente est de 1 seconde.

Dans le cas de faire jouer une son, au lieu d'un script suite , il suffit de placer la commande qui joue le son dans la branche où la variable = 0, de mettre la variable à la durée d'attente  et d'activer le sript.

Si une commande de son tente d'activer le script (déjà actif ) rien ne se passe (juste la décrémentation) si la variable n'est pas à zéro.

While :un scripte activé qui teste une condition , si oui on stop le script.

Do ou for : variable compteur + condition testant le passage à zéro , si non on décréente.

ou on incrémente et test une valeur limite, dans ce cas la variable peut servir d'indice.


Contrairement à la récursivité, les scripts actifs peuvent boucler indéfiniment mais ne plantent pas par consommation de mémoire, de plus on peut les arrêter avec les feux de circulation.

Amitiés
 


-------- Message d'origine--------
De: squeak-fr-bounces at lists.squeakfoundation.org de la part de Noury Bouraqadi
Date: ven. 22/12/2006 12:23
À: Squeak in french / Squeak en français
Objet : Re: [Squeak-fr] La boucle "FOR"
 

Le 21 déc. 06 à 21:32, Serge Stinckwich a écrit :

>
> Je crois que Gilles cherche plutôt pour les EToys que pour Smalltalk.
>
> Il n'y a pas vraiment cette notion dans les EToys car le style de
> programmation est évènementiel.
> Il faudrait plutôt associer un script à chacun de tes objets A, B, C,
> D. Tu peux faire cela avec la notion de sibling (avoir un script qui
> s'applique sur plusieurs objets).
>
Noter que les script en mode stepping bouclent indéfiniment. Rien  
n'empêche d'écrire un script avec un test qui provoque l'arrêt du  
stepping si le test échoue. Voir le projet ci-joint.

A part le sibiling mentionner par Serge, il y a aussi le morph  
Holder. Il a un "curseur" qui parcours les différents morphs  
contenus. Voir les categories spécifiques (comme par exemple :  
collection)

Noury
------------------------------------------------------------------
Dr. Noury Bouraqadi - Enseignant/Chercheur
ARMINES - Ecole des Mines de Douai - Dept. I.A.
http://csl.ensm-douai.fr/noury

European Smalltalk Users Group Board
http://www.esug.org

Squeak: a Free Smalltalk
http://www.squeak.org
------------------------------------------------------------------

-------------- section suivante --------------
Une pièce jointe non texte a été nettoyée...
Nom: non disponible
Type: application/ms-tnef
Taille: 4665 octets
Desc: non disponible
Url: http://lists.squeakfoundation.org/pipermail/squeak-fr/attachments/20061222/03772077/attachment.bin


More information about the Squeak-fr mailing list