10 for i=0 to 40 step .2
20 if i=20 then print "egal 20"
30 next i
Ce programme n'affiche rien! Du moins sur les Commodores et le ZX-81 (le TI-99 n'a pas le souci). Ici, c'est assez simple, mais dans un programme, on peut chercher pour trouver l'erreur!
eu au premier abord, à moins que i ne soit jamais égal à 20...
C'est bizarre ton truc
Quand je lis ça "oui des passionnées qui modifie des machines pour en faire des moutons a 5 pattes qui n'ont plus rien a voir avec la machine d'origine afin de faire la video choc sur youtube..."
Ca me fait rire. Perso, je n'ai ni chaine youtube sur les machines et je n'ai aucun mouton à 5 pattes qui n'a pàlus rien a voir avec des machines d'origine. Mais à qui s'adressait on ?
On voit des choses particulières sur le Commodore (j'ai testé sur le VIC-20 et le C-128). Par contre, sur le ZX-81. Les valeurs de I ont l'air correctes, mais il n'affiche quand même pas le message.
Je ne veux pas dire, mais c'est toujours valable.
J'ai eu tres récemment le même probleme avec un programme C (mais ca aurait pu être avec n'importe quel langage), due à la representation binaire des flottants ou 2 != 2.00 (je ne sais plus éxactement pour quelle valeur, le 2.00 étant évidemment dans une variable).
Je pense que si je n'avais pas bidouiller sur nos antiquités, je n'aurai jamais trouvé
Il y a quand même moins de pb en BCD je trouve ...
Amiga, UNIX
Sharp, NetBSD http://destroyedlolo.info/
Apache, PHP 100 % dictionnary free
Vacances, Voyages 1 mispelling by word
Bonjour,
Avec PC-BASIC qui simule le GW-BASIC avec les PC modernes, le programme ne fonctionne pas.
Voici une proposition avec modifications qui donne un résultat :
La variable A rendu propre remplace la variable I du compteur qui contient des dispersions faussant le résultat.
rogeroge a écrit : ↑12 nov. 2017 16:39
Bonjour,
Avec PC-BASIC qui simule le GW-BASIC avec les PC modernes, le programme ne fonctionne pas.
Voici une proposition avec modifications qui donne un résultat :
La variable A rendu propre remplace la variable I du compteur qui contient des dispersions faussant le résultat.
10 FOR I=0 TO 40 STEP .2
12 A=INT(I*100)/100
20 IF A=20 THEN PRINT "EGAL 20"
30 NEXT I
run
EGAL 20
Ok
Ah pas mal, le fait de mettre une autre variable avec calcul de l'entier de i !
Quand je lis ça "oui des passionnées qui modifie des machines pour en faire des moutons a 5 pattes qui n'ont plus rien a voir avec la machine d'origine afin de faire la video choc sur youtube..."
Ca me fait rire. Perso, je n'ai ni chaine youtube sur les machines et je n'ai aucun mouton à 5 pattes qui n'a pàlus rien a voir avec des machines d'origine. Mais à qui s'adressait on ?
Ce résidu ou dispersion propre à la nature du langage et au fonctionnement de l'électronique doit se corriger
par une programmation, soit insérée dans la machine, soit provoquée par le programmeur.
En simple précision sur un PC, on voit apparaître avec la ligne additionnelle 15 ajoutée au listing de Ben :
rogeroge a écrit : ↑13 nov. 2017 13:27
Il doit y avoir un petit monde en décimales non affiché après le nombre 20, ce qui explique l'erreur du programme
et la nécessité d'une retouche.
En fait, c'est sûrement la représentation binaire des décimales qui pose problème. Comme dis destroyedlolo, une représentation en BCD devrait arranger le problème. Sauf que sur les Commodores, je ne vois pas comment imposer la représentation interne.
Tout à fait et le codage BCD existerait sur la plupart des calculatrices et moins des ordinateurs.
J'ai ajouté une ligne 5 en plus de la ligne 15 au listing "Ben" natif.
Cette demande d'affichage des nombres en double précision montre les décimales plantant le programme.
Il faut être fou pour venir sur ce site mais encore plus fou pour ne pas y revenir !
En fait à chaque fois que le pas de 0.2 atteint le prochain nombre entier, il faudrait réinitialiser la valeur décimal à 0.
Quand je lis ça "oui des passionnées qui modifie des machines pour en faire des moutons a 5 pattes qui n'ont plus rien a voir avec la machine d'origine afin de faire la video choc sur youtube..."
Ca me fait rire. Perso, je n'ai ni chaine youtube sur les machines et je n'ai aucun mouton à 5 pattes qui n'a pàlus rien a voir avec des machines d'origine. Mais à qui s'adressait on ?
Ce qui peut aussi induire en erreur, c'est que l'instruction PRINT arrondi la représentation réelle en mémoire. Par exemple, toujours sur le Commodore: