"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
Il y a un principe déjà vu : Quand on tape POUR .... , on tape immédiatement le FIN_POUR associé quelques lignes plus bas, avec éventuellement un commentaire pour qu'on voie bien que ce FIN_POUR correspond à tel ou tel POUR.
Il y a une autre habitude à prendre qui permet d'éviter des erreurs :
Quand on a une instruction de type 'Remise à zéro' ( ici somme_note := 0 ), on a ensuite un traitement qui calcule somme_note, et en principe, au même niveau , on doit avoir une instruction ou un traitement qui va afficher le résultat, ou écrire le résultat dans un fichier.
En d'autres mots, le programme doit passer autant de fois par l'instruction somme_note :=0 qu'il passe par l'instruction afficher somme_note.
Encore une autre formulation de la même idée : tu pourrais avoir une version 'High Level' de ton algorithme :
Puis la version détaillée... celle que tu as faite, qu'il faut donc corriger.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Pour chaque groupe Initialisation des variables communes à ce groupe (Nombre d'étudiants) Pour chaque Etudiant Initialisation des variables globales pour cet étudiant ( Nombre de notes, note_moyenne) Calcul de la note moyenne ... étape qui va être plus détaillée dans la version suivante. Affichage de la note moyenne Etudiant Suivant Groupe suivant
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
tbc92, tu me dis que l'initialisation de "somme" doit passer autant de fois que le "somme <-- somme + note", ça veut dire que je dois les mettre dans la même boucle pour ?
Si je fais comme ceci, à chaque passage dans "Pour j de 1 à NbDeNote faire", la variable somme va reprendre la valeur 0, et j'aurai jamais mon incrémentation des valeurs de note.
Concernant l'affichage de la moyenne, il faut donc que je la remonte dans le programme ?
Décidément, je ne vois pas où tu veux en venir avec les Pour…Fin Pour, car chaque Pour est accompagné plus bas d'un Fin Pour dans le programme, le Fin Pour étant aligné avec le Pour …
Je ne dis pas cela.
je dis :
Selon le nombre de groupes et le nombre d'étudiants, on sait combien de fois on va devoir afficher le résultat ; 'Votre Note Moyenne est de '...
Disons 50 fois pour l'exemple.
Alors on doit avoir aussi 50 fois l'instruction de R.A.Z (Remise à Zéro) de Somme_Note
L'instruction de R.A.Z et l'instruction d'affichage s'exécutent autant de fois.
On peut s'arrêter là... mais on peut aussi ajouter (au risque de créer de la confusion)
:
Et on doit avoir aussi 50 fois un traitement qui calcule la somme moyenne ... Sachant que dans chacun de ces 50 traitements, on va avoir une boucle, et plusieurs fois l'instruction somme <-- somme + note.
Regarde l'exemple d'algorithme très court que j'avais donné. Je pense qu'il est très clair. A condition de voir que la ligne 'Calcul de la somme moyenne' correspond à un traitement éventuellement complexe, et ici, il correspond à une boucle, et donc à 5 ou 6 lignes dans un algorithme plus détaillé..
Et cette logique est très fréquente. On a souvent des traitements du type : Faire une boucle ou des boucles imbriquées, et au coeur de cette boucle, faire un R.A.Z., un traitement (plus ou moins complexe), et un affichage.
Dernier point, l'indentation : Dans mon exemple, le P de Pour Chaque Etudiant est aligné avec le I de la ligne du dessus... Il me semble que c'est la norme. En tout cas, j'ai toujours vu cela, et du coup, ça me paraît beaucoup plus facile à lire.
Mais je ne suis pas du tout une référence en matière de norme !
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
Je vais faire quelque chose mais je ne pense pas que ce soit ça que tu attends. Désolé de mon incompréhension…
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Algorithme : MoyenneAlgo Variables saisies : NbGroupe, NbEtu, NbDeNote : Entiers ; note : réel Variables affichées : i, k : entiers Variables intermédiaires : i, j, k : entiers ; somme : réel Début Afficher("Saisir le nombre de groupe") Saisir(NbGroupe) Pour i de 1 à NbGroupe faire Afficher ("Saisir le nombre d'étudiant dans le groupe", i) Saisir (NbEtu) Pour k de 1 à NbEtu faire Afficher ("saisir le nombre de note dans ce groupe") Saisir (NbdeNote) Somme <-- 0 Pour j de 1 à NbDeNote faire Afficher("saisir la note numéro ", j) Saisir (note) Somme <-- Somme + note Fpour // fin boucle "pour NbDeNote" Afficher ("la moyenne de l'élève", k, "du groupe", i, "est", Somme/NbDeNote) Fpour // Fin boucle "pour NbEtu" Fpour // Fin boucle "pour NbGroupe" Fin
C'est exactement ce que j'attendais.
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
Ca fait à peine un mois que je travaille sur des algorithmes, avant j'avais jamais touché à ça, donc pour être franc, je ne savais pas qu'on pouvait faire comme ça, je pensais que les Fin_Pour devaient être à la suite, sans rien y intercaler entre eux.
Et maintenant ça me paraît assez logique, car on veut effectivement afficher "k fois" la moyenne des k étudiants respectifs, et non pas une seule fois, comme c'était le cas quand ma ligne d'affichage se trouvait à la fin du programme.
Le programme, tel qu'il est là, il est fonctionnel donc ?
Bon, cependant je crois ne pas avoir répondu à :
Ca c'est le trouble total pour moi, je ne vois absolument pas ce que tu tentes de me dire, mais j'ai envie de savoir (même si d'après ce que tu m'as dit, ça ne servirait qu'à bonifier mon code) car c'est à force de manipuler et de me creuser le crâne que j'arriverai faire les choses.On peut s'arrêter là... mais on peut aussi ajouter (au risque de créer de la confusion)
:
Et on doit avoir aussi 50 fois un traitement qui calcule la somme moyenne ... Sachant que dans chacun de ces 50 traitements, on va avoir une boucle, et plusieurs fois l'instruction somme <-- somme + note.
.. si cette phrase sème le trouble .. oublie là.
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
Non j'ai envie de savoir, mais je ne comprends pas pourquoi tu me dis que je dois avoir "k fois" le traitement qui calcule somme <-- somme + note ? Car j'ai l'impression que c'est déjà ce que mon programme fait du fait que la boucle avec "j" est imbriquée dans celle avec "k"…
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager