en to fr translation catalogue (33 entries)

note: type: Resume-text
en: Program a progressive deceleration in order to avoid the mines right behind the goal.
fr: Décélération avec commande directe des moteurs.

note: type: \b; header
en: Exercise
fr: Exercice

note: type: Plain text
en: Reach the finishing pad (25m in front of you) as fast as possible, using the instruction <code>motor( , )</code>. You will have to slow down progressively at the end of the move, otherwise the bot will get blown up on the <a object|mine>mines</a>.
fr: Déplacez le <a object|bottr>robot</a> le plus rapidement possible, à l'aide de l'instruction <code>motor( )</code>. Il faudra programmer une décélération en bout de piste, pour ne pas percuter les <a object|mine>mines</a>.

note: type: Plain text
en: You could very well write no more than <c/><a cbot|move>move</a>(25);<n/>, this would work perfectly well. However, the aim of this exercise is to learn how to use the instruction <code><a cbot|motor>motor</a></code>.
fr: Un programme avec <c/><a cbot|move>move</a>(25);<n/> fonctionnerait parfaitement, mais le but est d'apprendre le fonctionnement de l'instruction <code><a cbot|motor>motor</a></code>.

note: type: Plain text
en: This instruction asks for two values:
fr: Cette instruction demande deux valeurs:

note: type: Bullet: '1)'
en: The speed of the left-hand motor.
fr: La consigne pour le moteur gauche.

note: type: Bullet: '2)'
en: The speed of the right-hand motor.
fr: La consigne pour le moteur droite.

note: type: Plain text
en: The values must range between -1 and 1:
fr: Il s'agit de deux valeurs comprises entre -1 et 1:

note: type: Bullet: '-'
en: 1 = full throttle backward
fr: 1 = marche arrière

note: type: Plain text
en:  0 = stop
     1 = full throttle forward
fr:  0 = arrêt
     1 = marche avant

note: type: Plain text
en: For example, <c/>motor(0.5, 0.5);<n/> will move the motor forward with half-speed, until new instructions are given to the motors.
fr: Par exemple, <c/>motor(0.5, 0.5);<n/> fait avancer le <a object|bottr>robot</a> à mi-vitesse, jusqu'à ce qu'une autre consigne soit donnée.

note: type: Plain text
en: With the instruction <c/>motor(0.5, 0.6);<n/>, the bot will move forward with half-speed, turning at the same time slightly to the left: the right-hand motor moves a little faster (<code>0.6</code>) than the left-hand motor (<code>0.5</code>).
fr: Avec l'instruction <c/>motor(0.5, 0.6);<n/>, le <a object|bottr>robot</a> avance à mi-vitesse en tournant légèrement à gauche, puisque le moteur de droite va un peu plus vite (<code>0.6</code>) que le moteur de gauche (<code>0.5</code>).

note: type: \b; header
en: General principle
fr: Idée générale

note: type: Plain text
en: In order to move forward for exactly 25 meters and not more, you must move full speed during the first 23 meters, then reduce the speed of the motors progressively during the last two meters.
    The <a cbot|var>variable</a> <a cbot|object>position</a> gives you at any moment the current position of the bot, and the instruction <c/><a cbot|dist>distance</a>( , );<n/> returns the distance between two points. The best way to know where you are consists in saving the current position before the start into a <a cbot|var>variable</a>, for example a variable called <code>start</code>. Then you can calculate the distance between the starting position and your current position with <code>distance(position, start)</code>.
fr: L'idée consiste à avancer à fond les 23 premiers mètres, puis à diminuer progressivement la vitesse les 2 derniers mètres.
    L'instruction <c/><a cbot|dist>distance</a>(p1, p2);<n/> retourne la distance entre deux points. Il suffit donc de mémoriser la position de départ, puis de calculer la distance parcourue avec <code>distance(position, start)</code>.
    La <a cbot|object>variable</a> <code>position</code> donne la position actuelle du <a object|bottr>robot</a>. Donc, <c/>distance(position, start);<n/> retourne la distance parcourue.

note: type: \b; header
en: The program
fr: Marche à suivre

note: type: Bullet: '1)'
en: declare the variables
fr: déclarez les variables

note: type: Bullet: '2)'
en: save the starting position
fr: Mémoriser la position de départ:

note: type: Bullet: '3)'
en: start full throttle :
fr: Démarrer à fond:

note: type: Bullet: '4)'
en: Perform an infinite <code><a cbot|while>while</a></code> loop:
fr: Faire une boucle infinie <code><a cbot|while>while</a></code>:

note: type: Source code
en: <c/>	while ( true )
    	{
    		len = distance(position, start);
    		if ( len > 25-2 )
    		{
    			motor( less than before ! );
    		}
    	}
fr: <c/>	while ( true )
    	{
    		float len = distance(position, start);
    		if ( len > 25-2 )
    		{
    			motor( moins qu'avant! );
    		}
    	}

note: type: Plain text
en: As long as the distance between the start and the current position is smaller than 23m, the instruction in braces after the <code><a cbot|if>if</a></code> instruction will not be executed, so the motors keep their maximum speed as they were told by the <c/><a cbot|motor>motor</a>(1,1);<n/> instruction.
fr: Tant que la longueur est plus petite que 23 mètres, on n'effectue pas les instructions après le <code><a cbot|if>if</a></code>. Les moteurs conservent donc les consignes initiales <c/><a cbot|motor>motor</a>(1,1);<n/>, vitesse maximale.

note: type: Plain text
en: In order to slow down progressively, the speed of the motors must be proportional to the remaining distance:
fr: Pour ralentir progressivement, il faut donner une consigne de vitesse proportionnelle au reste de la distance à parcourir:

note: type: Bullet: 'o'
en: <code>2.0</code> meters left -> speed = <code>1.00</code> (maximum)
fr: S'il reste <code>2.0</code> mètres -> consigne = <code>1.00</code> (maximum)

note: type: Bullet: 'o'
en: <code>1.5</code> meters left -> speed = <code>0.75</code>
fr: S'il reste <code>1.5</code> mètres -> consigne = <code>0.75</code>

note: type: Bullet: 'o'
en: <code>1.0</code> meter left  -> speed = <code>0.50</code>
fr: S'il reste <code>1.0</code> mètre  -> consigne = <code>0.50</code>

note: type: Bullet: 'o'
en: <code>0.5</code> meter left  -> speed = <code>0.25</code>
fr: S'il reste <code>0.5</code> mètre  -> consigne = <code>0.25</code>

note: type: Bullet: 'o'
en: <code>0.0</code> meter left  -> speed = <code>0.00</code> (stop)
fr: S'il reste <code>0.0</code> mètre  -> consigne = <code>0.00</code> (arrêt)

note: type: Plain text
en: You can use the following <a cbot|expr>expression</a> <code>(25-len)/2</code> in order to calculate the value for the speed instruction that must be given to the motors.
fr: L'<a cbot|expr>expression</a> <code>(25-len)/2</code> est donc parfaite pour cela.

note: type: Plain text
en: It is now up to you to put everything together and to test the program.
fr: A vous de terminer le programme ...

note: type: \b; header
en: Remark
fr: Remarque

note: type: Plain text
en: You can use values greater than 1 for the instruction <c/><a cbot|motor>motor</a>();<n/>, but the bot will not move any faster.
fr: Si les consignes données sont des valeurs plus grandes que 1, le <a object|bottr>robot</a> n'avance pas plus vite.

note: type: \t; header
en: See also
fr: Voir aussi

note: type: Plain text
en: <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
fr: <a tremote1>Exercice précédent</a>, <a cbot>programmation</a>, <a cbot|type>types</a> et <a cbot|category>catégories</a>.
