A tout hasard, je donne ci-dessous un programme ALGOBOX possible pour l'algorithme demandé :
- Code: Tout sélectionner
VARIABLES
NbT EST_DU_TYPE NOMBRE // Nombre de tirage
Aff EST_DU_TYPE NOMBRE // Drapeau pour affichage détails
N EST_DU_TYPE LISTE // N[0 à 3] nombre de fois qu'il y a eut 0,1,2 ou 3 face(s) 6
D EST_DU_TYPE NOMBRE // D face des dés D1 à D3
NbF6 EST_DU_TYPE NOMBRE // Nombre de face 6 sur les trois dés
i EST_DU_TYPE NOMBRE // variables outils pour les boucles
j EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
// Initialise Compteurs et demande nombre de tirages
AFFICHER "ENTER Nombre de Tirages :"
LIRE NbT
SI (NbT 200) ALORS
DEBUT_SI
Aff PREND_LA_VALEUR 0
FIN_SI
SINON
DEBUT_SINON
AFFICHER "ENTRER 1 pour afficher chaque tirage :"
LIRE Aff
FIN_SINON
FIN_SINON
POUR j ALLANT_DE 0 A 3
DEBUT_POUR
N[j] PREND_LA_VALEUR 0
FIN_POUR
// Répète NbT fois les tirage
POUR i ALLANT_DE 1 A NbT
DEBUT_POUR
NbF6 PREND_LA_VALEUR 0
SI (Aff == 1) ALORS
DEBUT_SI
AFFICHER i
AFFICHER ". TIRAGE: Face"
FIN_SI
// Effectue un tirage pour chacun des trois dés
POUR j ALLANT_DE 1 A 3
DEBUT_POUR
D PREND_LA_VALEUR ALGOBOX_ALEA_ENT(1,6)
SI (D==6) ALORS
DEBUT_SI
NbF6 PREND_LA_VALEUR NbF6+1
FIN_SI
SI (Aff == 1) ALORS
DEBUT_SI
AFFICHER " D"
AFFICHER j
AFFICHER "="
AFFICHER D
FIN_SI
FIN_POUR
N[NbF6] PREND_LA_VALEUR N[NbF6]+1
SI (Aff == 1) ALORS
DEBUT_SI
AFFICHER " Nb Face 6 ="
AFFICHER* NbF6
FIN_SI
FIN_POUR
// Affiche les résultats
POUR j ALLANT_DE 0 A 3
DEBUT_POUR
AFFICHER "Nombre de tirages avec "
AFFICHER j
SI (j > 1) ALORS
DEBUT_SI
AFFICHER " faces six: "
FIN_SI
SINON
DEBUT_SINON
AFFICHER " face six: "
FIN_SINON
AFFICHER* N[j]
FIN_POUR
FIN_ALGORITHME
P.S. La variable Aff sert uniquement à permettre d'afficher ou non le détail de chacun des tirages.
En dessous de 30 tirage les détails sont affichés systématiquement, au-dessus de 200 ils sont masqué. Entre 30 et 200 itérations, l'utilisateur peut choisir; en saisissant 1 , il permet l'affichage.
Plus j'utilise cet environnement Algo-Box, plus je me rends compte qu'il n'est pas adapté, maladroit et très peu pédagogique.
Par exemple, je ne comprends pas à quoi sert d'imposer une zone de déclaration des variables s'il n'existe pas de déclaration des bornes d'une liste et aucune vérification lors des validations du code ou des tests. Par exemple, il pourrait au moins y avoir un message qui explique pourquoi l'utilisation d'un membre d'une liste non initialisée donne une erreur.
De plus, le vérificateur ne vérifie pas la syntaxe dans les expressions de calculs ou de tests ...
Bref, c'est vraiment une très mauvaise idée d'utiliser cet environnement.
Il serait bien plus efficace et utile pour les élèves de demander de dessiner des organigrammes et écrire les algorithmes en language naturel.
S'il s'agit d'initier les élèves à la programmation, alors pourquoi ne pas utiliser un vrai language de programmation ? Ils ne perdraient pas leur temps à apprendre à programmer sous un si mauvais environnement et avec un language de programmation obsolette et un environnment aussi incomplet.