Boucles imbriquées paraissant ne jamais se terminer
mel00000
Messages postés6Date d'inscriptiondimanche 24 novembre 2013StatutMembreDernière intervention24 novembre 2013
-
24 nov. 2013 à 10:37
mel00000 -
28 nov. 2013 à 16:54
Bonjour,
Il faut que je fasse un programme sous Visual Basic 5.0 afin d'afficher l'évolution des températures sur une image, représentées par des couleurs.
Je n'arrive déjà pas à faire fonctionner mon programme qui est censé résoudre l'équation de la chaleur. Visual Basic 'ne répond plus' quand j'exécute.
Pouvez vous m'aider s'il vous plaît ?
'équation de la chaleur
dtp = 0.1
For Tp = 0 To 6000 Step dtp
'boucle sur espace :
For i = 15 To 624
For j = 15 To 464
dTi = k(i - 1, j) * (T(i - 1, j) - T(i, j)) + k(i + 1, j) * (T(i + 1, j) - T(i, j))
dTj = k(i, j - 1) * (T(i, j - 1) - T(i, j)) + k(i, j + 1) * (T(i, j + 1) - T(i, j))
dT(i, j) = (dTi + dTj) * dtp
Ttemp(i, j) = T(i, j) + dT(i, j)
Next j
Next i
'boucle sur temps:
For i = 15 To 624
For j = 15 To 464
T(i, j) = Ttemp(i, j)
Next j
Next i
Next Tp
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 24 nov. 2013 à 11:30
Bonjour
tu codes en vb6 ? ou vb.net
Visual Basic 'ne répond plus'
il a été vexé LOL
tu n'as aucun message d'erreur ?
quand tu lances l'application ton cpu monte en fleche et reste ainsi
sers toi du debugger
comme j'ai le vb6 en anglais
onglet debug -> add watch
dans le texbox expression Tp > 1000
et coches break when value is true
lances ton appli et que se passe t'il
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 24 nov. 2013 à 13:41
Bonjour,
- je déplace cette discussion. Tu ne développes pas sous VB.Net et la plus proche est VB6 (quasi identique à nVB5). Prens-en bonne note
- Je modifie le titre de cette discussion. Rien à voir avec ceci (la chaleur) ou cela ... mais, plus généralement, avec une boucle qui ne semble pas vouloir se terminer
- pour en venir à ton problème :
--- je ne vois pas pourquoi une boucle sur la valeur de tp, que tu ne sembles utiliser nulle part, ce qui ne t'empêche apparemment pas de faire 6000 fouis tous tes calculs !
--- tu dis n'avoir aucun message d'erreur et on te croit. Ce qui veut alors dire que le nombre impressionnant de tes calculs mobilise TOUT pendant un certain temps (un temps certain, devrait-on dire) !
La question est donc : si tu laisses "faire" très patiemment : au bout de combien de temps la main t'est-elle rendue ?
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 Modifié par NHenry le 24/11/2013 à 16:18
Visual Basic ne répond plus
En même temps, ça se comprend :
Déjà, on évite les boucle For avec des flottants, essayes plutot des entiers, puis divise la valeur par 10 ensuite.
Pour le nombre de calcul :
For Tp = 0 To 6000 Step dtp
Donc 6001*10 fois
For i = 15 To 624
For j = 15 To 464
610*450 = 274500
Ce qui donne :
16 472 745 000 calculs ...
Je pense que tu en demandes un peu trop à VB là.
Rien que pour stocker ton résultat sur des Floats, cela demanderait 65 890 980 000 octet de RAM, soit environ 65 Go de RAM environ, sachant que VB5 bosse au mieux en 32 bits, ce qui limite son usage à 2Go de RAM, je te laisse trouver ton erreur.
On peut discuter avec celui qui sait.
On peut discuter avec celui qui ne sait pas.
On ne peut pas discuter avec celui qui croit savoir.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
Vous n’avez pas trouvé la réponse que vous recherchez ?
mel00000
Messages postés6Date d'inscriptiondimanche 24 novembre 2013StatutMembreDernière intervention24 novembre 2013 24 nov. 2013 à 16:22
bonjour ucfoutu,
déolée pour avoir mal classé le sujet, et merci de l'avoir déplacé tout d'abord.
- en faisant une boucle pour tp allant de 0 à 6000 step dtp=0.1
je pensais que du coup la boucle allait se faire 10 fois en 1 intervalle de temps tp.
(ce sont les consignes du projet. Je suis censée calculer la température d'un pixel tous les dtp=0.1 intervalle de temps, et ceci pendant 6000 intervalles. La boucle s'arrête au bout de 6000 intervalles de temps.)
- un des problèmes auquel le prof veut qu'on soit confronté est justement le problème du grand nombre de calculs à effectuer...
- j'ai arrêté le programme au bout de 8 minutes en le tuant, je pense que ce n'est pas la peine d'aller plus loin ?
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 Modifié par NHenry le 24/11/2013 à 16:25
As-tu essayé la combinaison de touche Control+ScrollLock pour passer en mode pause ?
VB5 est totalement dépassé, utilises plutot VB.NET (version Express gratuite, librement téléchargeable sur le site de M$ )
mel00000
Messages postés6Date d'inscriptiondimanche 24 novembre 2013StatutMembreDernière intervention24 novembre 2013 24 nov. 2013 à 16:35
à quoi ça sert de passer en mode pause ? (j'ai essayé, ça marche, et merci du coup j'ai découvert un truc pour l'arrêter sans devoir tout le temps le fermer pour le rouvrir...)
mon projet doit être codé en VB5...
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 24 nov. 2013 à 16:45
Les profs, toujours à la pointe du progrès ...
Tu peux regarder le contenu d'une variable par exemple (Shift+F9, aussi appelé "espion" ), stopper une boucle infinie ou trop longue, ...
mel00000
Messages postés6Date d'inscriptiondimanche 24 novembre 2013StatutMembreDernière intervention24 novembre 2013 24 nov. 2013 à 16:58
en même temps il doit se dire qu'une bande d'incapables de l'informatique n'a peut être pas besoin de logiciels plus pointus ? ^^
Sachant que le but du projet est une initiation, histoire d'avoir touché à un ordinateur dans sa vie..
" mon projet doit être codé en VB5..."
Quel que puisse être l'outil de développement utilisé, ce sera de ton processeur, que tout dépendra avant tout. Et là ... tu le mobilises à fond, avec cette quantité incroyable de calculs.
Et tu le mobiliserais tout autant avec un autre langage de développement !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
33solo
Messages postés5Date d'inscriptionjeudi 15 mars 2007StatutMembreDernière intervention26 novembre 2013 26 nov. 2013 à 11:36
Plus de 82 000 000 000 traitements ... Tu devrais afficher un compteur dans la boucle principale pour voir le temps d'un traitement et si le prog est vraiement mort ou au travail.
Merci à tous pour vos réponses.
L'erreur venait tout d'abord du fait que même l'initialisation de mon projet ne se faisait pas à cause des propriétés de ma picturebox mal définies (autoredraw, autosize, scalemode).