boucle toute bête ...

Discussion sur l'enseignement de l'algorithmique avec Xcas au lycee
seb7477
Messages : 12
Inscription : jeu. août 05, 2010 4:25 pm

boucle toute bête ...

Message par seb7477 » ven. août 06, 2010 9:29 am

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

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: boucle toute bête ...

Message par parisse » ven. août 06, 2010 6:39 pm

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'

seb7477
Messages : 12
Inscription : jeu. août 05, 2010 4:25 pm

Re: boucle toute bête ...

Message par seb7477 » ven. août 06, 2010 6:59 pm

Merci beaucoup.
En fait les parenthèses servent à afficher tout les résultats 'intermédiaires' et non pas que le dernier résultat ?

alain974
Messages : 104
Inscription : lun. mai 24, 2010 11:15 am

Re: boucle toute bête ...

Message par alain974 » sam. août 07, 2010 5:14 am

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!

parisse
Messages : 5731
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: boucle toute bête ...

Message par parisse » sam. août 07, 2010 6:26 am

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.

seb7477
Messages : 12
Inscription : jeu. août 05, 2010 4:25 pm

Re: boucle toute bête ...

Message par seb7477 » sam. août 07, 2010 7:24 am

Merci beaucoup pour la précision de vos réponses.

Répondre