RobotC
Résolu/Fermé
hdiama
Messages postés
188
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
2 janvier 2012
-
28 janv. 2010 à 18:08
hdiama Messages postés 188 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 2 janvier 2012 - 5 nov. 2010 à 16:31
hdiama Messages postés 188 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 2 janvier 2012 - 5 nov. 2010 à 16:31
12 réponses
GenerationRobots
Messages postés
4
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
23 novembre 2010
2
26 oct. 2010 à 15:10
26 oct. 2010 à 15:10
Oui, c'est bien cela et c'est d'ailleurs l'effet recherché. En effet, on évite les boucles infinies en programmation classique par contre, on les recherche en robotique car on veut qu'un comportement, une vérification de variable, une lecteur d'un capteur... se fasse indéfiniment. Mais alors, la question qui vient, c'est comment un robot ne reste-t-il pas bloqué ? La réponse est "Multitâche, parallélisme...". Un robot doit savoir faire plusieurs choses à la fois : lire la valeur de certains capteurs, indiquer aux moteurs combien de tours de roue ils doivent tourner, mettre à jour des variables en mémoire... Il est impensable qu'un robot s'arrête de se déplacer car il est en train de demander à son capteur de distance s'il y a un obstacle devant lui, même si cette lecture est rapide.
Donc en robotique, on se sert massivement du multitâche (ou multithreading qui en est une variante) de sorte qu'une tâche peut tout à fait contenir un while (true). Le code ne s'arrêtera pas de lui même mais c'est le code qui a lancé la tâche (ou le thread) qui va l'arrêter.
Donc en robotique, on se sert massivement du multitâche (ou multithreading qui en est une variante) de sorte qu'une tâche peut tout à fait contenir un while (true). Le code ne s'arrêtera pas de lui même mais c'est le code qui a lancé la tâche (ou le thread) qui va l'arrêter.
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
5 nov. 2010 à 00:40
5 nov. 2010 à 00:40
Et un simple break; peux cesser une boucle infinie.
zelos666
Messages postés
181
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
20 juillet 2010
12
28 janv. 2010 à 18:18
28 janv. 2010 à 18:18
Le "else" ses pour un "if" et non le "while".
pi si tu a un while(true) sa veut dire que tu a du code dans ton while qui finit par le changer en false.
pi si tu a un while(true) sa veut dire que tu a du code dans ton while qui finit par le changer en false.
hdiama
Messages postés
188
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
2 janvier 2012
6
28 janv. 2010 à 18:28
28 janv. 2010 à 18:28
Ok, je vois;
Mais sinon, je cherche à faire garder l'équilibre à un gyropode. Tu ne saurais pas comment faire?
Merci pour ta réponse!
Mais sinon, je cherche à faire garder l'équilibre à un gyropode. Tu ne saurais pas comment faire?
Merci pour ta réponse!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
zelos666
Messages postés
181
Date d'inscription
mercredi 27 janvier 2010
Statut
Membre
Dernière intervention
20 juillet 2010
12
28 janv. 2010 à 19:18
28 janv. 2010 à 19:18
Non désolé, ses hors de mes compétence :/
hdiama
Messages postés
188
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
2 janvier 2012
6
28 janv. 2010 à 19:43
28 janv. 2010 à 19:43
Ok, je te remercie quand même :)
hdiama
Messages postés
188
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
2 janvier 2012
6
4 nov. 2010 à 21:20
4 nov. 2010 à 21:20
Merci pour les éclaircissements!
GenerationRobots
Messages postés
4
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
23 novembre 2010
2
5 nov. 2010 à 09:13
5 nov. 2010 à 09:13
Bonne remarque !
juveln
Messages postés
118
Date d'inscription
vendredi 24 septembre 2010
Statut
Membre
Dernière intervention
19 octobre 2011
15
5 nov. 2010 à 10:11
5 nov. 2010 à 10:11
Utiliser un break fonctionne mais c'est un solution un peu agressive... pour sortir de la boucle plus proprement, il suffit de l'instancier à un boolean qui est true au début et lorsque le travail voulu est fini on le met à false....
boolean run = true
while(run){
...
}
Lorsqu'on veut sortir de la boucle on suffira de
run = false
boolean run = true
while(run){
...
}
Lorsqu'on veut sortir de la boucle on suffira de
run = false
hdiama
Messages postés
188
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
2 janvier 2012
6
5 nov. 2010 à 11:45
5 nov. 2010 à 11:45
En fait, j'utilise pas de break, y a un bouton spécial sur le robot pour arrêter, où on peut le faire directement à partir de l'IDE. Mais merci pour a proposition!
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
5 nov. 2010 à 12:22
5 nov. 2010 à 12:22
Dans ce cas-là, pour fermer, il y a plusieurs possibilités.
Un break;
Le bouton Stop dans l'IDE.
Une variable True / False (mais pas avec while(true) alors)
exit() selon les languages
return 0 s'il y a une fonction int main()
...
Un break;
Le bouton Stop dans l'IDE.
Une variable True / False (mais pas avec while(true) alors)
exit() selon les languages
return 0 s'il y a une fonction int main()
...
hdiama
Messages postés
188
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
2 janvier 2012
6
5 nov. 2010 à 16:31
5 nov. 2010 à 16:31
ça résume tout en effet :)