on va rajouter 5 km a S1 puisque on ajoute 5 km chaque semaine pour obtenir S_2 on va rajouter 5 pour obtenir S_3 ?
Et non, on parcoure chaque semaine 5km de plus que la précédente.
Ce qui fait que la distance totale de la semaine 1 à la semaine 2, c'est... ce qui correspond à la distance totale de ... à ...
Il faut en fait utiliser la relation que je t'ai faite chercher entre S_n+1 et S_n.
oui ta réponse est juste, mais ça ne m'apporte rien (c'est de ma faute j'ai fait une erreur), évidemment que la distance totale parcourue de la semaine 1 à 2, c'est bien cette distance
Non, la distance parcourue de la semaine 1 à 2, c'est la distance parcourue de la semaine 1 à 1, plus la distance parcourue pendant la semaine 2. (et pas la semaine 1!).
Mathématiquement, cela se traduit par S_2 = S_1 + u_2. Plus généralement, S_n+1 = S_n + u_n+1 (ne pas oublier le +1 !!)
Fort de cette afirmation, que doit-on rajouter à S_n pour obtenir S_n+1 ? (je te fais répéter la même chose...). Propose maintenant un algorithme "à la main", comme je te le demandais
Oui. On connait donc S_1. On sait comment passer de S_1 à S_2, de S_2 à S_3 et ainsi de suite : Il suffit de rajouter u_2 à S_1 pour avoir S_2, puis u_3 à S_2 pour avoir S_3...
On va faire comme si l'ordi connaissait déjà toutes les valeurs de u_n. Quand tu lui dis u_3, il comprend, et il connaît la valeur.
Rédige donc un algorithme pour calculer S_n.
Entrée Saisir S
Initialisation S prend la valeur 40 (1) Traitement
Pour I allant de 1 à s (2)
S prend la valeur Sn=Sn+un+1
Fin de Pour
Dans cet algorithme, un+1 est bien définit. Mais où est définit Sn ?
Petit point sur l'incrémentation (ce que tu cherches à faire en disant "S prend la valeur Sn=Sn+un+1").
En fait, tu cherches à écraser la valeur actuelle de S, par une nouvelle valeur, qui vaut S + u_n+1. La syntaxe pour faire ça, c'est "variable" prend la valeur "nouvelle valeur".
Et le saisir S il ne convient pas. Que renvoie l'algorithme si je saisi 1 ? si je saisi 2 ? si je saisi 321 ? Combien de fois est ce qu'on va rajouter u_n+1 à s_n ? (i.e. combien de fois la boucle va se répéter ?)
Combien de fois veut-on qu'elle se répète pour calculer S_n ?
Dans les langages moins proches de l'humain, on peut écrire S=S+u_n+1, mais si on adopte ce genre de syntaxe " S prend la valeur", on ne peut pas mélanger les 2.
Entrée Saisir Sn
Initialisation Sn prend la valeur 40 (1) Traitement
Pour I allant de 1 à Sn+un+1 (2)
S prend la variable Sn=Sn+un+1
Fin de Pour
Non, je t'ai expliqué, pour la syntaxe d'incrémentation, corrige.
Sn est bien définit, mais on n'a pas réparé le problème du nombre de répétition.
Combien de fois veut on rajouter u_n+1 à S_n (en partant de S_1) pour obtenir S_N ?
Combien de fois va se répéter ta boucle si j'entre 1 ? 2 ? et 321 ?
S prend la valeur, pas la variable... Qu'est ce que ça peut signifier que S prend la variable ? Un peu de rigueur...
Oui, c'est vrai. Mais ce n'est pas ce que fait l'algorithme.
Ce qu'on veut qu'il fasse, c'est que si j'entre 3, il fasse S_1 + u_2, auquel il ajoute u_3, pour m'afficher le résultat, S_3. Je répète, combien de fois veut on ajouter u_n+1 à S_n (en partant de S_1) pour obtenir S_N ? Cette incrémentation "répétitive" correspond à quoi dans l'algo ?
Dans ton algo, si j'entre 3, qu'est ce qu'il se passe ? La même chose que si j'entre 2, ou n'importe quoi, puisque dans la ligne qui suit, on écrase ce que j'ai entré par 40.
d'ailleurs, j'avais pas fait attention, S_321 c'est S_320 + u_321... (mais bon c'était HS de toute façon)
Et en fait, dans l'algo, pardon, u_n+1 n'est pas définit, car n ne l'est pas.
Tu vas adopter les notations que je te donne pour l'algo, j'ai l'impression que ça t'embrouille :
On appellera N le rang au quel on veut calculer la suite.
S sera la valeur de la suite (S_n), au rang "actuel" du calcul, de la boucle. Cette valeur se fait donc écraser à chaque boucle, par la valeur du rang suivant.
u_... sera la valeur de la suite (u_n) au rang "...", rang qu'on est obligé de définir pour que l'ordi sache de quoi on parle.
La variable d'itération que tu appelles I, on va l'appeler n.
Ces 4 variables te suffiront, inutile d'ajouter Sn, un, ou je ne sais quoi.
Entrée Saisir N
Initialisation Sn prend la valeur 40 (1) Traitement
Pour n allant de 1 à s (2)
S prend la valeur Sn=Sn+un+1
Fin de Pour
Non.
1 - Arrête avec l'algo, répond à mes questions. Combien de fois veut-on ajouter u_n+1 à S_n (en partant de S_1) pour trouver S_N ?
2 - Adopte mes notations : que vient faire "Sn prend la valeur" ?
Je t'explique encore une fois pour la syntaxe d'incrémentation : ce que je mets en bleu ce sera des termes génériques, qu'il faudra remplacer par ce qu'ils représentent, pour ton cas. Si j'écris par exemple variable d'itération, tu dois remplacer, dans la syntaxe "réelle", par ta variable d'itération (ici n). Ce qui est en rouge doit rester tel quel.
On écrit : variable prend la valeur nouvelle valeur
Quand on cherche à incrémenter S de u_n+1, qu'est ce que variable, qu'est ce que sa nouvelle valeur ? Écris moi cette incrémentation correctement.
Que se passe-t-il si je saisis 2 dans ton algo ? La même chose que si j'entre 3 ou n'importe quoi, puisque tu n'utilises pas N par la suite. (mais c'est déjà un bon point de ne pas écraser la valeur que j'entre tout de suite après )
Bonjour :
1- On ajoute n fois u_n+1 à S_n (en partant de S_1) pour trouver S_N
Entrée Saisir N
Initialisation Sn prend la valeur 40 (1) Traitement
Pour n allant de 1 à n (2)
S variable prend la valeur nouvelle valeur N=Sn+un+1
Fin de Pour Sn
Pour la 1 - n n'est pas défini "à l'extérieur de la boucle". La seule chose que j'ai défini c'était N.
l'algo est pas mal.
Bon, on dit, S prend la valeur S+u_n+1 !!
Pour quoi tu utilises S et Sn ? C'est soit S, soit Sn. Dans ton algo, S et Sn sont 2 choses différentes, tu le comprends ça ? Je vais exécuter la boucle pour te montrer ce que ça donne :
Sn prend la valeur 40
Pour n allant de 1 à "quelquechose" :
S prend la valeur Sn+un+1
Fin de pour
Ca donne :
1 - ok, Sn vaut 40.
2. n vaut 1.
3. S vaut 40+u_2, super
4. Je recommence : n vaut maintenant 2
5 S vaut Sn+u_3 = 40 + u_3 (La valeur de Sn n'a pas changé entre temps ! Ici on aimerait que S vaut S_2 + u_3 = S_1 + u_2 + u_3, et on déjà mis grâce à la boucle précédente la valeur S_2=S_1+u_2 dans une variable : S !)
"pour n allant de 1 à n", tu vois pas l'erreur dans cette ligne ? n vaut toujours n. Donc quand tu dis qu'il doit aller de 1 à n, il y est déjà et la boucle ne se répétera qu'une fois.
Bref, on y est presque. Il reste un dernier problème (corrige les autres en premier) : que renvoie l'algo si je saisis 1 ? Il est sensé renvoyé S_1, mais execute le toi même, et dis moi s'il renvoie S_1 ou... S_...
Entrée Saisir N
Initialisation Sn prend la valeur 40 (1) Traitement
Pour n allant de 1 à un+1 (2)
Sn prend la valeur S+un+1
Fin de Pour Sn
Toujours pas.
1 - combien de fois je dois répéter l'incrémentation donc ? Tu as compris que ce nombre correspondait au nombre fois qu'il faut répéter la boucle ?
Tu constates toi même que u_n+1 ne fait que grandir, à chaque boucle ? (puisque le cycliste parcours d'abord 40, puis 45, puis 50, puis 55...) Donc ta boucle ne s'arrêtera jamais, n ne rattrapera jamais u_n+1
"Sn prend la valeur S+u_n+1", où est défini S ?
Entrée Saisir N
Initialisation Sn prend la valeur 40 (1) Traitement
Pour n allant de 1 à un+1 (2)
S prend la valeur S+un+1
Fin de Pour Sn
Non, quand on écrit "pour n allant de 1 à (admettons u_n+1", n vaut d'abord 1, puis 2, puis 3, puis 4 ... jusqu'à arriver à u_n+1 (qu'il n'atteindra jamais, encore un ordi que tu viens de détruire )
Entrée Saisir N
Initialisation Sn prend la valeur 40 (1) Traitement
Pour n allant de 1 à un (2)
S prend la valeur S+un+1
Fin de Pour Sn
S prend la valeur S+un+1 correct
Il reste encore de faux le "Pour n allant de 1 à un+1". Cette ligne correspond au nombre de fois qu'on veut répéter la boucle. Combien de fois veut-on la répéter pour calculer S_N (N étant un entier que l'utilisateur a entré) ?
oups ! "S prend la valeur S+u_n+1" faux, dans le premier tour, S n'est pas défini auparavant, tu ne peux pas l'utiliser dans un calcul "S+u_n+1"
Entrée Saisir N
Initialisation S prend la valeur 40 (1) Traitement
Pour n allant de 1 à un (2)
S prend la valeur S+un+1
Fin de Pour Sn
Pour quoi ça serait u_n ? On a dit, S_n+1 = S_n + u_n=1.
Pour calculer S_2 on rajoute u_2 à S_1.
Pour calculer S_3, on doit ajouter u_3 à S_2, mais pour obtenir S_2, on doit d'abord ajouter u_2 à S_1. On a donc répéter la boucle combien de fois ?
Et pour obtenir S_N, combien de fois on va répéter la boucle ?
"S prend la valeur S+un+1" correct, cette fois S a bien été défini à l'initialisation !
Petit détail : pour quoi tu écris "fin de pour Sn" (déjà Sn n'existe pas, et quand bien même, que vient-il faire ici ?). Et à la fin, ton algo il doit donner une réponse, le tien ne fais rien.
Pour le Sn de la fin, juste enlève le, il sert à rien Mais il faut que ton algo finisse par renvoyer quelque chose... il lui manque une ligne
Non, pour calculer S_2 on incrémente 1 fois S_1 de u_2.
Pour calculer S_3, on incrémente S_1 de u_2, puis de u_3, donc on incrémente 2 fois au total
Pour calculer S_4, on incrémente S_1 de u_2, puis de u_3, puis de u_4, donc on incrémente 3 fois...
Pour calculer S_N, on doit incrémenter N-1 fois.
Remarque : il n'est pas claire si je dis "pour n allant de 1 à 3" si la boucle va se répéter 2 ou 3 fois. Au premier tour, n vaut 1, puis 2 au 2ème tour. Mais à la fin du 2ème, n vaut 3. Quand n vaut 3, on fait encore un tour ? Dans la question 5), pour que l'algo marche, il faut effectivement faire un dernier tour.
Exécute donc cet algo "à la main", comme un robot, pour N=1. Vérifie s'il calcule bien S_1 (donc qu'il ne calcule pas en fait )
Pour ça, je préfère la syntaxe :
n prend la valeur 1
tant que n < quelquechose" (ou <=)
On fait ce qu'on veut faire en boucle
n prend la valeur n+1
Fin tant que
Entrée Saisir N
Initialisation S prend la valeur 40 (1) Traitement
Pour n allant de 1 à Sn (2)
S prend la valeur S+un+1
Fin de Pour N-1fois
n prend la valeur 1
tant que n <1
On fait ce qu'on veut faire en boucle
n prend la valeur n+1
Fin tant que n <1
"Pour n allant de 1 à Sn" Sn n'est pas défini.
Syntaxe pour répéter une boucle M fois :
Pour n allant de 1 à M
On fait ce qu'on a à faire dans la boucle
Fin de pour
C'est la première ligne "pour n allant de 1 à M" qui dit combien de fois la boucle va se répéter : n va augmenter de 1 à chaque tour, jusqu'à atteindre M. La boucle va donc se répéter M fois.
Le "fin de pour", c'est juste pour délimiter la boucle "dans l'algo". S'il n'était pas là, on saurait pas si les lignes qui suivent doivent être elles aussi répétées en boucle ou pas
Si j'avais mis "pour n allant de 2 à M", la boucle se serait répétée M-1 fois. Si j'avais mis "pour n allant de 2 à M+1", la boucle se serait répétée, comme pour "pour n allant de 1 à M", M fois.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :