en effet le 5eme lien de google donne la bonne information. Cependant, c'est un tuto pour gtk 1.2 date de l'an 2000, je ne l'aurais certainement pas regarde, c'est souvent trop vieux.
Question.
J'ai une boucle for de 0 à 6. Dedans je récupère des valeurs de tableaux que je mets dans des floats
for ( 1 .. 6 )
{
float x = arr[i];
float y = bar[i];
float z = foo[i];
}
Je récupère comme ça pas mal de float.
Qu'elle est la meilleure stratégie pour récupérer ces valeurs ? Comme je le fais, directement pomper la valeur depuis l'array ? Avec un pointeur ? Déclarer les var en dehors de la boucle for ?
Je pense que ma méthode n'est pas la plus mauvaise car on a affaire à des type primitifs et le compilateur doit pouvoir améliorer les choses tout seul, il me semble que si je déclare les var en dehors du for, cela ne change rien. Je ne pense pas que l'utilisation de pointeurs soit non plus super intéressant sachant qu'on à affaire à des type primitifs répartis dans plusieurs tableaux. J'aurai plutôt vu l'intérêt s'il fallait récupérer les valeurs dans des structs elle même dans un tableau.
Bref, qu'en pensez vous ?
Mais tu en fais quoi de x, y et z ?
Parce que t'es pas censé les déclarer plusieurs fois tes variables, là tu vas les déclarer à chaque itération. Je sais plus trop ce que ça donnera, mais soit ça compilera pas, soit l'existence de chacune des trois variables sera limitée à l'itération actuelle de la boucle. Ce qui fait que tu devras la traiter directement, avant qu'elle disparaisse.
Donc faut nous en dire plus sur l'usage que tu veux en faire. Si tu as un besoin immédiat de x, y et z et qu'après cet usage tu n'as plus besoin de la valeur, tu peux les déclarer avant la boucle, les récupérer et les traiter dans la boucle, et basta.
Ou si tu as besoin d'avoir, après ta boucle for, les 6 valeurs de x, y et z, tu peux faire un tableau à deux dimensions (float tab[3][6]) qui contient, pour x, y et z dans l'ordre les 6 valeurs obtenues.
Un truc du genre :
float tab[3][6] = {{0}, {0}}; // Pas sûr pour l'initialisation
for(i=0;i<6;i++)
{
x = tab[1][i];
y = tab[2][i];
z = tab[3][i];
}
Mais de nouveau, c'est pas forcément la solution la plus adaptée, pour ça faudrait que tu nous dise dans quel contexte tu en as besoin.
Dans la boucle ce serait plutôt comme ça, pardon :
{
tab[1][i] = arr[i];
tab[2][i] = bar[i]:
tab[3][i] = foo[i];
}
Effectivement, je les utilise seulement dans la boucle.
Dans ce cas pourquoi passer par des variables ? Je sais pas ce que tu peux en faire, mais tu peux les traiter directement via leur tableau.
Par exemple si c'est pour une fonction de GUI qui dessine une image à une coordonnée précise, tu peux faire un truc du genre :
for(i=0;i<6;i++)
{
dessine(image1, arr[i], ecran);
dessine(image2, bar[i], ecran);
dessine(image3, foo[i], ecran);
}
Bon mon exemple est un peu pourri parce que je pense pas que ce soit ce que tu fais avec ton programme, mais pour ça me faudrait plus de détails^^ En tout cas c'est clair que comme ça t'évites de déclarer 3 variables, donc c'est plus optimisé. Sous Windows ça change pas grand chose, à moins que ta fonction soit appelée très très souvent, mais en embarqué ça peut clairement avoir son importance ![]()
J'effectue plusieurs traitement avec ces variables, elles sont ajoutée à des objets, additionnées, bref plein de traitements, d'où le fait que je dois les mettre dans des variables.
Dans ce cas déclares les trois float avant la boucle, tu mets dedans les 3 valeurs et tu les traites. Ce sera toujours mieux que de les déclarer dans la boucle.
Paulop avant toute chose des qu'il s'agit d'optimisation -a moins que le but de ton post soit entierement didactique de ta part- : as-tu au moins profile cette partie du code et en es arrive a la conclusion que probleme de performance il y avait ?
Non il s'agit simplement de connaître la meilleure pratique, le code n'est pas vraiment problématique en soit, seulement 6 tours de boucles avec des traitement simple, ça casse pas trois pâtes à un canard, mais c'est pour étendre le problème que je me posais la question.
Si tu ne te sert des variables que dans la boucle il est inutile de les déclarer en dehors. De même qu'il est inutile de travailler avec par pointeur. De manière générale fait confiance au compilo pour ce genre de choses, le plus important est d'écrire du code LISIBLE.
Et c'est plus lisible de les déclarer dans la boucle car tu les utilise pas dehors, de même que tu n'utilise pas leur adresse apparemment donc c'est plus lisible de travailler avec leur valeur plutot qu'avec des pointeurs.
Yop tout le monde!
Est-ce que l'un d'entre vous a déjà commandé et reçu un Raspberry Pi...? Par tout hasard.
Si ui, vous en êtes satisfaits?
J'ai un contact fb qui vient d'en recevoir un et qui a l'air d'en être totalement satisfait ![]()
Pour changer :p
Je peine à trouver des critiques négatives...
J'en ai commandé un aussi d'ailleurs, par contre je sais pas trop quand il arrivera, c'est marqué que ça peut prendre jusqu'à 11 semaines :/
Ui dommage que t'aies pas posté sur le blabla, je t'aurais filé un autre site... Snootlab tu connais?
Je l'ai commandé avant hier soir, il en restait 3 en stocks, aujourd'hui plus rien...
Je dois le recevoir demain ou après demain si tout se passe bien ![]()
Mais j'aurais sûrement eu des frais de port supplémentaires, là je l'ai acheté sur un site suisse.
Et non je connaissais pas, mais c'est marrant ils vendent des plateformes arduino, je savais même pas que ça existait, je connais juste le logiciel qui simule les entrées/sorties de ports ![]()
Ahah ouais le pied si t'es un bidouilleur averti. Le site a bonne réputation en plus.
Sinon t'en as eu pour combien au final? Fdpin
J'ai pris quelques trucs avec en fait, j'ai paumé un peu tout les câbles & co qu'il me restait durant les rangements d'été
Donc ça donne ça :
Raspberry Pi Type B Single Board Computer £21.60 £21.60
4GB Class 6 SDHC Flash memory card for Raspberry Pi £6.49 £6.49
Ethernet network cable for Raspberry Pi £0.97
Raspberry Pi Type B Case - White £3.99
Micro USB Euro power supply for Raspberry Pi £4.89
Belkin Hi-Speed USB 2.0 4-Port Hub £5.99
Running Total £43.93
Standard Delivery (Despatch expected within 11 week(s)) £4.95
Order total £48.88
Donc environ 50 livre, soit 75CHF, donc 60€.