Bonjour, j'ai un devoir maison de maths à rendre pour lundi et je n'arrive pas à le faire; pourriez-vous m'aider s'il vous plait.
Soit le programme suivant écrit en langage naturel:
u⬅ 6000
Pour i allant de 1 à n
u⬅ u+300
Fin Pour
1.) Lequel de ces deux scripts est sa traduction en langage python ? Expliquer la différence.
def suite(n): def suite(n) :
u=6000 u=6000
for i in range(n) : for i in range(n+1) :
u=u+300 u=u+300
return u return u
2.) Ecrire un algorithme permettant de déterminer la valeur un, n étant une valeur donnée par l'utilisateur
3.) Implémenter cet algorithme sur ordinateur ou sur une calculatrice en Python
4.) A l'aide du programme, déterminer les valeurs de u9, u10, u199, u200, u499 et u500
5.) Que peut-on en déduire quand n tend vers +∞
bonjour
qu'est-ce que tu ne comprends pas exactement ?
que retourne le programme écrit en langage naturel lorsque n=2, par exemple ?
l'énoncé est-il bien complet ? (pour les questions 2 et suivantes)
la suite (un) n'est pas clairement définie ?
Pour la question 1 je pense qu'il s'agit du deuxième script mais je ne saurais comment l'expliquer.
En langage naturel i va de 1 à 2 ?
Oui l'énoncé est complet, c'est tout ce que j'ai
si tu ne sais pas l'expliquer, c'est que tu réponds au hasard
... on va essayer d'aider le hasard en commençant par le début
(on laisse python de coté pour le moment).
u⬅ 6000
Pour i allant de 1 à n
u⬅ u+300
Fin Pour
Afficher u -- je rajoute cette ligne
En langage naturel i va de 1 à 2 ? --- oui, très bien, lorsque l'on prend pour exemple n=2,
i prendra la valeur 1 au premier passage dans la boucle pour
puis la valeur 2, au second passage dans la boucle
déroule ton algo à la main, ligne après ligne
que va retourner l'exécution de la ligne "Afficher u" ?
Oui l'énoncé est complet, c'est tout ce que j'ai
ben alors, il est mal rédigé.
parce que si l'algo en langage naturel nous permet de comprendre de quel type de suite il s'agit,
il manque l'information sur l'indice du 1er terme.
(est-ce u0 ? u1 ? u25?)
et donc, à mon avis, on ne peut pas répondre à la question 2.
si quelqu'un a une autre idée, je suis preneuse.
non, pas 6300
u=6000 ----- avant d'entrer dans la boucle, initialisation de la valeur de u
Pour i allant de 1 à n
u= u+300
Fin Pour
Afficher u
ce que je mets en bleu va "tourner" 2 fois (si n=2)
1er passage : i= 1 ==> u=u+300 ==> u = ...combien ?
2eme passage : i= 2 ==> u=u+300 ==> u = ...?
donc en sortie u = ...?
avec ce que donne l'énoncé, la suite est définie par récurrence,
il doit donc clairement identifier (en plus) le 1er terme.
je m'explique :
>> si le 1er terme de la suite est u0=6000 --- indice 0
alors u2 = 6600 --- cas n=2, voir message de 16h28
>> si le 1er terme de la suite est u1=6000 --- indice 1
alors u2 = 6300 --- car u2 = u1 + 300 = 6300
tu vois, cela a de l'importance.
tu as possibilité de demander à ton professeur ?
super
en attendant sa réponse, on peut toutefois répondre à la question 1)
je poursuis.
u⬅ 6000
Pour i allant de 1 à n
u⬅ u+300
Fin Pour
on vient de voir que la boucle pour doit tourner autant de fois que le le précise l'entier n
si n= 2, elle tourne 2 fois
si n= 5, elle tourne 5 fois
etc.
observe les 2 fonctions python :
la seule différence est for i in range(n) : ou for i in range(n+1) :
==> regarde dans le cours (ou sur le net) comment fonctionne une instruction for i in range()
qu'est-il important de savoir à son sujet ?
Mon prof dit qu'il n'y a aucune erreur et que la première ligne sert à initialiser la suite par le premier terme à 6000
tout à fait,
mais ce qui est important est justement ce qui précisé entre les parenthèses du in range ()
fais une petite recherche perso sur le net
ce sera la meilleure façon de t'en souvenir
Le dernier élément ne fait jamais partie de la liste si par exemple on a in range(10) les valeurs vont donc de 0 à 9.
in range(10) les valeurs vont donc de 0 à 9. ------ parfait !
donc avec for i in range(n) : --- la boucle va tourner.... combien de fois ?
mm question pour for i in range(n+1) :
ps : prends un exemple avec une valeur pour n pour mieux compter, par ex n= 5, vois ce qui se passe
Pour n= 5:
For in range(n), l'instruction va tourner 5 fois
For in range(n+1), l'instruction va tourner 5 + 1 fois donc 6
dans un cas pareil, on va devoir prendre une décision à la place de l'énoncé :
on va choisir 0 pour indice du 1er terme de la suite, donc u0=6000,
définissant ainsi clairement une suite (un) pour tout n
de quel type de suite s'agit-il ?
tu vas trouver la réponse dans le cours.
oui, première instruction, donc 1er script
oui, une suite arithmétique de premier terme u0= 6000 et de raison ...? (on doit préciser ces 2 données)
---
2.) Ecrire un algorithme permettant de déterminer la valeur un, n étant une valeur donnée par l'utilisateur
là, on te demande un algorithme en langage naturel (comme celui donné au début de l'énoncé),
n étant une valeur donnée par l'utilisateur --- qu'est-ce que cela implique, dans l'algo ?
nb : pour cette question 2), tu peux faire de 2 façons différentes :
- soit tu adaptes et complète l'algo de l'énoncé (donc en gardant sa logique)
- soit tu utilises directement la formule générale d'un terme d'une suite arithmétique (ou terme général, voir formule dans le cours)
prends le temps de réfléchir; essaie de produire quelque chose, ça nous servira de base pour continuer.
je repasse de temps en temps pour te lire, mais un autre intervenant disponible peut prendre le relais.
Mais nous n'avons pas la raison, à part si c'est 300.
Au lieu d'une forme explicite de formule un= u0 + n x r, il ne s'agirait pas plutôt d'une suite arithmétique par récurrence dont la formule est un + 1= u0 + r et c'est bien ce que l'on a : un= u0 + 300
Ah non finalemnt c'est bon j'ai compris et c'est donc bien une forme explicite et pas par explicite
---------
Pour n= 5 u0= 6000 et r= 300 on a:
un + 1= u0 + r
∀ n ∈ N, u5= 6000 +5 x300
= 7 500
bien sur que la raison est 300 !
en effet, on additionne toujours le même nombre (300) pour passer d'un terme au suivant.
---
dans ce que tu dis ensuite, tu t'emmêles un peu les pinceaux, je démêle le vrai du faux :
>> Au lieu d'une forme explicite de formule un= u0 + n x r ---- exact
un= u0 + n* r est en effet le terme général d'une suite arithmétique
que devient cette formule dans ton exo ?
>> il ne s'agirait pas plutôt d'une suite arithmétique par récurrence dont la formule est un + 1= u0 + r
ce qui est en rouge est faux
une définition de suite arithmétique par récurrence est de la forme un+1 = un + r,
où on définit un terme par rapport à son précédent :
le terme indice n+1 est défini par rapport au terme d'indice n auquel on ajoute la raison r.
>> et c'est bien ce que l'on a : un= u0 + 300 --- eh non, on n'a pas ceci ! c'est la boucle pour qui le dit
regarde :
si tu écris un= u0 + 300 pour tout n
alors
u2 = u0 + 300 = 6000+300=6300
u80 = u0 + 300 = 6000+300=6300 tous les termes seraient égaux à 6300 !
alors qu'avec la boucle, dans l'algo, on va ajouter plusieurs fois la raison 300, autant de fois que l'indice n l'indique.
en résumé, pour définir notre suite arithmétique, il y a 2 façons :
1) soit par récurrence : u0 = 6000 ET un+1 = un + 300
--- c'est ce que traduit l'algo de l'énoncé : on calcule tous les termes les uns après les autres : u1 , u2, ... un
2) soit par son terme général : un = u0 + nr soit ici, un = 6000 + 300 * n
--- on calcule un terme directement en fonction de n, pas besoin de calculer tous ceux qui précédent;
on peut par ex calculer directement u100 = 6000 + 300*100
---
pour la question 2) tu peux donc utiliser une des 2 définitions, celle que tu veux;
évidemment les 2 programmes seront bien différents.
avec la 1ère définition, il te suffit d'utiliser/adapter la question 1...
messages croisés, je corrige toutefois pour écarter toute ambiguité :
Ah d'accord je comprends mes erreurs
"n étant une valeur donnée par l'utilisateur" cela ne sous-entendait pas que c'était à nous de donner une valeur à n ? Ou fallait-il juste traduire un en fonction de n
c'est à nous de donner une valeur à n
i.e. de permettre à l'utilisateur de saisir la valeur n de son choix lors du lancement de l'algo.
tu as certainement déjà vu ça dans des exemples de cours.
---
2.) Ecrire un algorithme permettant de déterminer la valeur un, n étant une valeur donnée par l'utilisateur
relis nos échanges si besoin.
... en fait ce n'est pas très difficile si tu as bien compris ce que fait l'algo déjà donné par l'énoncé.
il y a juste 2 lignes à ajouter.
je vais couper pour ce soir, et passe le relais à qui est disponible.
à défaut, je reviendrai lire demain ta proposition de réponse.
bonne soirée
bonjour Lennie215
non, ce n'est pas correct, pour plusieurs raisons :
1) la "machine" ne connait ni ∀, ni N, ni un, ni u0, ni r...
... elle va te recracher tout ça avec un beau message d'erreur.
==> tous ces éléments n'ont aucune raison, voire utilité, de figurer dans ton algorithme.
2) à aucun moment tu ne permets à l'utilisateur de saisir une valeur pour n
3) à aucun moment tu ne permets d'afficher le résultat attendu.
---
on doit essayer de 'réfléchir' comme la machine
('réfléchir' est un bien grand mot pour une machine : elle est hyper rapide et dispose une énorme mémoire, mais est foncière stupide).
c'est à toi de lui fournir et détailler tout ce dont elle a besoin, pas à pas,
afin qu'elle puisse t'afficher la seule chose qui t'intéresse : la variable u, après que tu lui auras précisé une valeur pour n.
question : que fait cet algorithme ?
u⬅ 6000
Pour i allant de 1 à n
u⬅ u+300
Fin Pour
tout part de là...
je reviens plus tard (si d'autres aidants souhaitent intervenir, pas de souci)
Les variables i et n sont des entiers naturels (N) et u est un réel
Posons u0 comme premier terme de la suite
u0 ⬅ 6000
Pour i allant de 1 à n
un⬅ u0+300
un= u0 + n*r
Pour tout entier naturel n ∈ N, un= 6000 + 300n
Fin Pour
Afficher u
tu n'y es pas.
... tu n'as pas répondu à ma question : que fait le programme écrit en langage naturel au début de l'énoncé ?
coup de pouce pour 2) :
.....? il manque cette ligne
u⬅ 6000
Pour i allant de 1 à n
u⬅ u+300
Fin Pour
Afficher u
relis mon dernier message de 14h35
oui, tu en doutes ?
relire message 04-03-22 à 16:28
le programme du début de l'énoncé écrit en langage naturel permet de calculer la valeur de u.
2.) Ecrire un algorithme permettant de déterminer la valeur un, n étant une valeur donnée par l'utilisateur
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :