Page 1 sur 1

boucle toute bête ...

Publié : ven. août 06, 2010 9:29 am
par seb7477
Bonjour,

j'aimerai afficher les dix premiers carrés .
Cela est simple avec une boucle tant que mais est ce possible avec une boucle pour ?

la seule chose que j'arrive à faire c'est afficher le dernier carré :

pour j de 1 jusque 10 afficher j^2;
fpour


merci

Re: boucle toute bête ...

Publié : ven. août 06, 2010 6:39 pm
par parisse
il manque les parenthèses:
afficher(j^2);
et aussi le faire
pour j de 1 jusque 10 faire
afficher( j^2);
fpour
L'absence de faire est repérée comme une erreur de syntaxe, mais pas pour afficher.malheureusement, car l'interpréteur considère qu'on effectue 2 instructions 'afficher'; et j^2; (qui n'ont aucun effet), comme on peut le voir en tapant
'pour j de 1 jusque 10 faire afficher j^2; fpour'

Re: boucle toute bête ...

Publié : ven. août 06, 2010 6:59 pm
par seb7477
Merci beaucoup.
En fait les parenthèses servent à afficher tout les résultats 'intermédiaires' et non pas que le dernier résultat ?

Re: boucle toute bête ...

Publié : sam. août 07, 2010 5:14 am
par alain974
seb7477 a écrit : En fait les parenthèses servent à afficher tout les résultats 'intermédiaires' et non pas que le dernier résultat ?
En fait les parenthèses servent comme en maths, à préciser qui est l'antécédent de la fonction. En effet afficher est une fonction, qui retourne sans doute un nombre (on n'en a cure), et qui prend en "argument" (ou antécédent) un texte à afficher.

Quand on écrit afficher(x), le résultat est l'affichage de x. Et quand on écrit afficher x, le résultat est l'affichage d'un vide (puisqu'on appelle la fonction "afficher" sans lui fournir d'objet à afficher) suivi par un appel à la fonction "x" qui n'existe pas, et ne fait donc rien. L'erreur semble similaire à celle des élèves qui, en voyant f(x), croient qu'il s'agit du produit de f par x et non de l'image de x par f.

En ne mettant pas les parenthèses, sans doute que ce n'est même pas "afficher" qui est responsable de l'affichage final, mais la boucle elle-même, qui, lors de sa sortie, produit cet affichage automatique. En résumé, les parenthèses ne servent pas à afficher tous les résultats intermédiaires, mais à dire quoi afficher!

Re: boucle toute bête ...

Publié : sam. août 07, 2010 6:26 am
par parisse
plus précisément, affichage tout seul est interprété comme un objet de type fonction (on ne peut pas en faire grand chose ici, mais plus générallement on pourrait par exemple le composer avec @ pour faire une fonction composée), et en effet le 100 qui est envoyé dans ce cas (en noir) est le résultat de l'évaluation du dernier élément de la ligne de commande, à ne pas confondre avec les affichages intermédiaires en bleu.

Re: boucle toute bête ...

Publié : sam. août 07, 2010 7:24 am
par seb7477
Merci beaucoup pour la précision de vos réponses.