Compréhension de l'algorithme de calcul de la factorielle
Bonsoir à tous je suis un étudiant débutant dans le domaine informatique
Je suis tombé sur un exercice en-ligne sur l'algorithmique après plusieurs heures de réflexion dessus j'ai du mal à comprendre
Pourriez vous m'expliquer ligne par ligne afin d'éclairer mes zones d'ombres svp!!
Voici l'algorithme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Var n, i, f: entiers
Début
Écrire "entrez un nombre:"
Lire n
f=1
Pour i=2 à n
F=f*i
I=i+1
Écrire "la factorielle est:" F
Fin pour
Fin |
Compréhension de l'algorithme de calcul de la factorielle
Bonjour, :D
Citation:
Envoyé par
FrancisTita
... Var n, i, f: entiers
Début
Écrire "entrez un nombre:"
Lire n
f=1
Pour i=2 à n
F=f*i
I=i+1
Écrire "la factorielle est:" F
Fin pour
Fin
Question: les variables (f et F) d'une part, (i et I) d'autre part sont-elles identiques ?
Si oui, l'incrémentation est incompatible avec l'énoncé de la boucle .
Si non, (f) restera égal à sa valeur initiale (1), et (F) prendra les valeurs successives (2, 3 ... n) ... et les variables (F, I) n'auront pas été déclarées.
Le pseudo-code ne serait-il pas plus tôt:
Code:
1 2 3 4 5 6 7 8 9 10
| Var n, i, f: entiers
Début
Écrire "entrez un nombre:"
Lire n
f=1
Pour i=2 à n
f=f*i
Fin pour
Écrire "la factorielle est:" F
Fin |
Compréhension de l'algorithme de calcul de la factorielle
En reprenant la nouvelle version du code:
Code:
1 2 3 4 5 6 7 8 9
| Début
Écrire "entrez un nombre:"
Lire n on affecte à la variable (n) une valeur entière arbitraire (qui doit dépasser (1);
f=1 on affecte à la variable (f) la valeur (1);
Pour i=2 à n (i) prend successivement les valeurs: 2, 3, 4 ... n ;
f=f*i c'est le coeur du programme: (f) se voit affecter la nouvelle valeur: f = fvaleur précédente*ivaleur actuelle
Fin pour
Écrire "la factorielle est:" F
Fin |
À toi de détailler ce qui se passe ... :D
Traiter les cas particuliers
Bonjour,
1/ Les variables déclarée sont entières. Elles peuvent donc être négatives. Il faut s'en assurer et, le cas échéant, définir le retour.
2/ Selon le langage qui sera utilisé, le comportement de la boucle peut être différent pour les valeurs 0 ou 1. Heureusement, la plupart ne passeront dans la boucle (quelques fois avec génération d'une erreur) mais c'est quelque chose à vérifier.
Salutations
Organigramme (algorigramme)
Visuellement, ça donne ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| .---------------------.
| n = ? |
D_PROG | f = 1 |
| n :: 1 |
n<= 1 .----------+----------. n>1
.-------------------<?>-------------------.
| .----------+----------.
| D_ENTIER | i = 2 |
| .----------+----------.
| |<------------------.
| .----------+----------. |
.----------+----------. | f = f * i | |
| MESSAGE | T_ENTIER | i = i + 1 | |
.----------+----------. | i :: n | |
| .----------+----------. i<=n |
| <?>------------------.
| .----------+----------.
| F_ENTIER | « Factorielle = » f |
| .----------+----------.
.--------------------+--------------------.
.----------+----------.
F_PROG | Ø |
.---------------------. |