Les P'tits
Génies
ALGORITHME
«Ensemble de règles opératoires dont l'application permet de résoudre un problème énoncé au moyen d'un nombre fini d'opérations. Un algorithme peut être traduit, grâce à un langage de programmation, en un programme exécutable par un ordinateur.» LAROUSSE
Dans cet algorithme nous avons choisi de traiter deux caractéristiques du robot aspirateur : la première est de ralentir lorsqu'il rencontre un objet quelconque et de prendre une autre direction, aléatoire, afin de ne pas percuter l'objet en question; la deuxième est de sortir ou non la brosse suivant le support sur lequel il se trouve.
Dans la première partie de l'algorithme, le moteur est défini avec 250 tours par minute en marche normale, et 0 tour par minute lorsqu'il ralentit à l'approche d'un objet. La distance aux objets est analysée par les capteurs situés sur l'aspirateur. Cette information est traitée par l'algorithme : si la distance est inférieure ou égale à 0.04 m alors l’algorithme envoie une information codée en langage binaire pour que le nombre de tours par minute soit réglé à 0. Si cette distance est supérieure à 0.04 m alors l'aspirateur garde sa vitesse constante. Le tour par minute défini précédemment est repris par l'algorithme, lorsque il est égal à 0 et que la distance à l'objet est inférieure à 0.04 m, il détermine un angle de rotation aléatoire.
Dans l'autre partie, le support est détecté en s'intéressant à la vitesse relevée par les capteurs de vitesse puisque la vitesse change selon le support : si elle est comprise entre 0.500 et 0.750 kilomètres par heure, l'aspirateur se trouve sur de la moquette, il range donc sa brosse, si elle n'est pas comprise dans l'intervalle [0.500;0.750] l’aspirateur nettoie une surface de parquet ou de carrelage, il sort donc la brosse.
1 VARIABLES
2 distance EST_DU_TYPE NOMBRE
3 vitesse EST_DU_TYPE NOMBRE
4 Angle_de_virage EST_DU_TYPE NOMBRE
5 Brosse EST_DU_TYPE NOMBRE
6 Tourmin EST_DU_TYPE NOMBRE
7 DEBUT_ALGORITHME
8 LIRE distance
9 SI (distance>0.04) ALORS
10 DEBUT_SI
11 Tourmin PREND_LA_VALEUR 250
12 FIN_SI
13 SINON
14 DEBUT_SINON
15 Tourmin PREND_LA_VALEUR 0
16 Angle_de_virage PREND_LA_VALEUR random()
17 FIN_SINON
18 Angle_de_virage PREND_LA_VALEUR Angle_de_virage*90/1
19 AFFICHER "angle:"
20 AFFICHER Angle_de_virage
21 AFFICHER "vitesse:"
22 AFFICHER vitesse
23 LIRE vitesse
24 SI (vitesse<=0.750 ET vitesse>=0.500) ALORS
25 DEBUT_SI
26 Brosse PREND_LA_VALEUR 0
27 FIN_SI
28 SINON
29 DEBUT_SINON
30 SI (vitesse>0.750) ALORS
31 DEBUT_SI
32 Brosse PREND_LA_VALEUR 1
33 FIN_SI
34 SINON
35 DEBUT_SINON
36 AFFICHER "Position de la brosse non affectée"
37 FIN_SINON
38 FIN_SINON
39 AFFICHER Brosse
40 FIN_ALGORITHME