Sorry, you must be logged in to use the shoutbox!

Auteur Sujet: Définir tableau  (Lu 111 fois)

Kikibou

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Définir tableau
« le: avril 20, 2018, 11:29:23 pm »
Bonjour, je souhaiterais définir toutes les valeurs d'un tableau sans avoir à les définir une par une (dans le programme, pas au setup).

Sur la photo, à gauche, ce que je pense qu'il faut faire, à droite, ce que je souhaiterais faire. (PS : lorsque que je mets la partie droite dans mon programme, blockly n'écrit rien dans le programme)

Le Lendemain :

Après une bonne nuit de sommeil, je pense avoir compris comment il faut faire. Ce que je veux faire, c'est à chaque fois initialiser mon tableau. Mais je ne sais pas si Blockly peut le faire... Ce qu'il me faudrait, c'est qu'il mette à chaque fois un "int" devant le tableau. Car lorsque je lui did d'affecter à l'élément "rien", dans la liste "liste", la valeur "une liste constituée de...", il ne place pas de "int" devant la ligne, et le programme n'est pas valide pour l'arduino :
liste[] = {5, 10, 15};  //Ce que fait blockly
int liste[] = {5, 10, 15};  //Ce qu'il faudrait qu'il fasse

PS : si j'utilise le bloc Définir, il met automatiquement la ligne au début du programme, donc ce n'est pas ce qu'il me faut...

Avez-vous une solution ?
Merci
« Dernière modification: avril 21, 2018, 12:44:33 pm par Kikibou »

SebCanet

  • Administrator
  • Sr. Member
  • *****
  • Messages: 379
    • Voir le profil
Re : Définir tableau
« Réponse #1 le: avril 21, 2018, 04:23:52 pm »
Salut,
le problème est la déclaration en variable globale automatique dans Blockly, il n'y a pas de variable locale, donc le tableau est déclaré en premier.
Le bloc de droite écrit bien le code "int liste[] = {5, 10, 15};", qu'est ce que tu veux faire d'autre exactement ?
Tu es sur quelle version de Blockly@rduino ?

Kikibou

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Définir tableau
« Réponse #2 le: avril 21, 2018, 08:02:25 pm »
Ce que je voudrais, faire c'est mettre ce code là, mais dans le programme (loop et fonction).

Ma version est la 15-04-2018 - v2.7

Dans mon programme principale, je met moi-même les int devant les tableau dans le programme. Mais le problème, c'est que les valeurs du tableau ne sont pas conservé dans les fonctions. Par exemple, je défini dans le loop la valeur 1 au premier élément de la liste, mais dans la fonction, quand je demande cette valeur, est vaut 0...

Pourquoi ?

Merci
« Dernière modification: avril 21, 2018, 08:08:50 pm par Kikibou »

SebCanet

  • Administrator
  • Sr. Member
  • *****
  • Messages: 379
    • Voir le profil
Re : Définir tableau
« Réponse #3 le: avril 22, 2018, 01:19:18 pm »
Peux tu mettre en pièce jointe un programme qui pose pb ?

Kikibou

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Définir tableau
« Réponse #4 le: avril 22, 2018, 01:24:29 pm »
Voici le programme, mais je pense que ça va être compliqué à comprendre comme ça. N'hésite pas à me demander des explications, et si il faut, je metterais des commentaires sur les blocs.

Ce que je ne comprends absolument pas, c'est que seule la première Led de la bande "déconne" (elle clignote), sauf dans le mode 7 joueurs ! Elle marche très bien. Pour tous les autres, il y a ce problème. Pourtant, la seule chose qui change en 7 joueurs, c'est qu'il y a une variable de plus (qui ne reste pas à 0, dans les autres modes)... C'est vraiment bizarre !

Merci encore pour ton aide !
« Dernière modification: avril 22, 2018, 02:30:12 pm par Kikibou »

fontaine.jp

  • Jr. Member
  • **
  • Messages: 85
    • Voir le profil
Re : Définir tableau
« Réponse #5 le: avril 24, 2018, 09:35:31 pm »
Salut,
Je ne veux pas te vexer mais il va falloir un sacré courage à celui qui va se lancer dans le débug de ce programme.
Sachant que je ne joue pas au poker et que je n'est pas le matériel pour le tester, tout ce que je peux faire c'est te donner quelques pistes.
 - la fonction etat_1 je l'imagine plutôt comme en pièce jointe ; l'idée étant de rendre tout ça plus clair car ici une seule variable est utilisée
 - à la place des "si alors" utilise plutôt des "suivant que"
 - on affiche sur le port série Valeurs-_Joueurs[0] alors qu'on ne lui a jamais affectée de valeurs
 - dans le loop() il y a le tableau Valeurs_Joueurs_Etats ; quelle est la différence avec les  variables Joueur_1_Etat on a l'impression qu'on utilise une variable pour en affecter une autre ? Suis-je clair ?
 - il y a des trous (blocs qui manquent) dans ton programme c'est normal ?
A+

Kikibou

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Définir tableau
« Réponse #6 le: avril 24, 2018, 10:58:44 pm »
Bonjour, merci beaucoup pour ta réponse. Ne t'inquiète pas, c'est ce que je voulais faire passer dans mon message précédent... Avec environ 1200 blocs, et un programme pas très clair, je sais bien que ça va être compliqué de se lancer là-dedans, et je suis même très agréablement surpris d'avoir une réponse de ta part.

- Pour la fonction "etat 1", effectivement, c'est une des premières choses que j'ai faite dans mon programme et je n'ai donc pas pensé à créer un tableau comme je l'ai fait après. Par contre, pour l'exemple que tu as mis en pièce jointe, est ce que cela suffit sur l'on ne met rien à "affecter à l'élément de rang...", car c'est justement ce dont tu parles à la fin, là où il manque des blocs. Je ne mets pas de blocs afin qu'il initialise la liste (car je ne veux pas qu'il mette la liste, à un élément de cette liste). Mais je suis obligé à chaque fois, d'ajouter un "int" devant la (les) ligne(s) avant de télé verser le programme, sinon il y a une erreur. Donc je préférais te demander si je dois mettre la même chose que ce que tu as mis (ou si je serais obligé de faire comme pour les autres tableaux) ?
- Je n'avais pas pris le temps de regarder tous les blocs de Blockly, et effectivement, celui-là semble intéressant. Mais peut-on l'utiliser, car il ne s'agit pas de valeur de variable, mais de l'état de différents ports ?
- Pour le tableau Valeurs_Joueurs_Etats, je crée enfaîte le tableau que j'aurais dû faire pour la fonction "Etat 1". Je le crée pour pouvoir utiliser une boucle dans la fonction "Gestion Leds" (car je ne peux pas utiliser le bloc "créer un texte..." ;) ).

PS : il est tard donc je prendrais le temps de mieux voir cela après avoir dormi, mais je crois que je suis en train de me rendre compte que je pourrais remplacer beaucoup de variables par des tableaux (et ne pas les créer au dernier moment comme je le fais dans ce groupe de quatre tableaux).
Mais ce que je veux faire à chaque fois, c'est initialiser chaque élément de ces tableaux pendant le programme (et ne pas avoir le "int" en tout début de programme)

Donc, comment fait-on pour "effacer" tous les éléments d'un tableau, puis de rentrer ensuite toutes ces valeurs ? (ce que je pense faire quand je mets des "int" devant les tableaux, donc initialiser le tableau)

Encore merci beaucoup à toi pour avoir pris le temps d'analyser mon programme. À +
« Dernière modification: avril 24, 2018, 11:02:42 pm par Kikibou »

fontaine.jp

  • Jr. Member
  • **
  • Messages: 85
    • Voir le profil
Re : Définir tableau
« Réponse #7 le: avril 25, 2018, 12:04:15 pm »
Salut,
tu as raison dans la pièce jointe précédente il y a une erreur à la compilation, j'ai confondu avec un autre langage.
- Voici la méthode correcte avec blockly@rduino pour déclarer les variables (mis à 0) et ensuite pour affecter les valeurs (mis à 1).
- un exemple avec "suivant que"
A+