Safari de Peaugres tarifs : étapes pour coder un simulateur
L’erreur la plus fréquente consiste à additionner les prix avant d’avoir défini les catégories. Or un programme ne calcule rien « à peu près ». Il exécute des instructions. Si un enfant de 2 ans entre dans la variable enfants, le total est faux.

Safari de Peaugres tarifs: étapes pour coder un simulateur
Si le Pack Tribu est appliqué à une famille de 2 adultes et 2 enfants sans traiter le quatrième enfant correctement, le total est faux.
Billets et tarifs
Réserver des billets — à partir de 35 €- West Midlands Safari Park: Day Admission Ticket — à partir de 20 € · billet d'entrée
- San Diego Zoo Safari Park 1-Day Ticket — à partir de 68 € · billet d'entrée
Disponibilité : Available tomorrow
Tarifs indicatifs, susceptibles de changer — prix et disponibilités confirmés sur la page du partenaire.
Lien partenaire — billetterie GetYourGuideLe sujet n’est donc pas seulement de calculer les tarifs du Safari de Peaugres. Il faut modéliser une grille tarifaire réelle, avec ses conditions, ses bornes d’âge, ses options et ses offres groupées. C’est un bon exercice d’algorithmique au collège: les variables représentent des données, les conditions appliquent des règles, puis le programme affiche un résultat contrôlable.
Les tarifs utilisés ici sont les suivants:
| Catégorie | Billet Liberté | Billet Futé à J-7 minimum |
|---|---|---|
| Adulte, dès 11 ans | 32,90 € | 27,90 € |
| Enfant, de 3 à 10 ans inclus | 27,50 € | 22,50 € |
| Moins de 3 ans | Gratuit | Gratuit |
Le Pack Tribu, vendu en ligne, coûte 110,80 €. Il couvre exactement 2 adultes et 3 enfants. Le Camion Brousse ajoute 10 € par participant.
Analyser les règles avant d’ouvrir Scratch
Un simulateur ne commence pas par des blocs Scratch. Il commence par une lecture stricte des règles.
Les visiteurs sont répartis en trois groupes:
- les adultes: 11 ans ou plus;
- les enfants: de 3 à 10 ans inclus;
- les bébés: moins de 3 ans.
Les bébés ne paient pas l’entrée. Ils ne doivent donc jamais être multipliés par un tarif d’enfant. Cette règle paraît simple. Elle produit pourtant une erreur classique: créer une seule variable nombre enfants, puis y placer tous les mineurs.
Il faut aussi distinguer les formules:
- le billet Liberté correspond au tarif sur place;
- le billet Futé impose un achat au moins sept jours avant la visite;
- le Pack Tribu est disponible en ligne uniquement;
- le Camion Brousse est une option ajoutée au billet d’entrée;
- le supplément Camion Brousse est identique pour les adultes et les enfants.
Le programme doit recevoir des données non ambiguës. Il ne doit pas demander: « Combien êtes-vous? » Cette question est insuffisante. Il doit demander combien il y a d’adultes, d’enfants et de bébés.
Une variable ne doit contenir qu’une seule nature d’information. Sinon, la condition devient imprécise.
Avant le code, on peut écrire la formule du billet Liberté:
\[
\text{total Liberté} = 32{,}90 \times \text{adultes} + 27{,}50 \times \text{enfants}
\]
Les bébés n’apparaissent pas dans la somme. Ce n’est pas un oubli. C’est la traduction de la gratuité.
Pour le billet Futé, le mécanisme reste identique:
\[
\text{total Futé} = 27{,}90 \times \text{adultes} + 22{,}50 \times \text{enfants}
\]
Le changement porte seulement sur les coefficients. Donc, en Scratch, il est plus propre de stocker les tarifs dans des variables que de répéter des nombres dans chaque calcul.
Créer les variables du simulateur
Dans Scratch, créer les variables suivantes, toutes « pour tous les sprites »:
adultesenfantsbebesformulecamiontarif adultetarif enfanttotal entreeparticipants camiontotal camiontotal finalreste adultesreste enfantsnombre packs
La variable formule peut contenir un mot simple: liberte, fute ou tribu. Scratch ne force pas l’usage des nombres. Une réponse textuelle est donc possible. Cependant, elle exige une orthographe exacte.
Pour un premier programme, le plus sûr est d’utiliser des codes numériques:
1pour le billet Liberté;2pour le billet Futé;3pour le Pack Tribu.
Le programme devient plus robuste. La condition « si formule = 2 » ne dépend pas d’un accent, d’une majuscule ou d’une faute de frappe.
Initialiser ensuite toutes les variables. Cette étape est obligatoire. Sans initialisation, une valeur issue d’un essai précédent peut rester affichée.
1. Placer le bloc quand le drapeau vert est cliqué.
2. Mettre adultes à 0.
3. Mettre enfants à 0.
4. Mettre bebes à 0.
5. Mettre total entree à 0.
6. Mettre total camion à 0.
7. Mettre total final à 0.
8. Mettre nombre packs à 0.
Puis poser les questions, dans cet ordre:
1. « Nombre d’adultes, 11 ans ou plus? »
2. « Nombre d’enfants, de 3 à 10 ans? »
3. « Nombre de bébés, moins de 3 ans? »
4. « Formule: 1 pour Liberté, 2 pour Futé, 3 pour Tribu? »
5. « Combien de personnes prennent le Camion Brousse? »
Après chaque réponse, affecter la valeur:
- mettre
adultesàréponse; - mettre
enfantsàréponse; - mettre
bebesàréponse; - mettre
formuleàréponse; - mettre
participants camionàréponse.
La variable bebes n’intervient pas dans le prix d’entrée. Elle sert néanmoins au contrôle. Un groupe de 2 adultes, 3 enfants et 1 bébé comprend 6 personnes, mais seulement 5 entrées payantes.
Programmer le billet Liberté et le billet Futé
Le premier bloc de décision porte sur la formule choisie.
Si formule = 1, alors le programme utilise les tarifs Liberté:
- mettre
tarif adulteà32.9; - mettre
tarif enfantà27.5; - mettre
total entreeàadultes × tarif adulte + enfants × tarif enfant.
Si formule = 2, alors le programme utilise les tarifs Futé:
- mettre
tarif adulteà27.9; - mettre
tarif enfantà22.5; - mettre
total entreeàadultes × tarif adulte + enfants × tarif enfant.
Dans Scratch, le calcul peut être construit avec les opérateurs verts. Il faut respecter les parenthèses visuelles. Le calcul attendu est:
((adultes × tarif adulte) + (enfants × tarif enfant))
Le bloc principal suit cette logique:
1. Si formule = 1, fixer les tarifs Liberté et calculer.
2. Sinon, si formule = 2, fixer les tarifs Futé et calculer.
3. Sinon, traiter éventuellement la formule Tribu.
4. Sinon, afficher une erreur de saisie.
Ne pas écrire trois blocs si indépendants. Avec trois si, Scratch teste les trois conditions l’une après l’autre. Cela fonctionne ici si les valeurs sont exclusives, mais la structure devient fragile dès qu’un calcul plus complexe est ajouté. Le bloc si... alors / sinon impose une branche unique.
Exemple de calcul sans Pack Tribu
Une famille déclare:
- 2 adultes;
- 2 enfants;
- 1 bébé;
- formule Futé.
Le calcul est:
\[
2 \times 27{,}90 + 2 \times 22{,}50 = 100{,}80
\]
Le bébé est gratuit. Le total d’entrée doit donc être de 100,80 €.
Si le programme affiche 123,30 €, il a probablement appliqué le tarif enfant au bébé. Si le programme affiche 65,80 €, il a probablement oublié les enfants. L’écart indique souvent l’instruction fautive.
Le débogage commence par un calcul fait à la main. Sans résultat de référence, un affichage ne prouve rien.
Gérer le Pack Tribu sans erreur de priorité
Le Pack Tribu coûte 110,80 € pour 2 adultes et 3 enfants. Il ne signifie pas que toute famille doit payer 110,80 €. Il ne couvre pas un nombre illimité de visiteurs.
C’est le point algorithmique le plus intéressant de cette simulation des tarifs du Safari de Peaugres.
Pour une famille de 2 adultes et 3 enfants, le calcul est direct:
\[
\text{total entrée} = 110{,}80
\]
Pour une famille de 3 adultes et 4 enfants, le Pack Tribu couvre:
- 2 adultes;
- 3 enfants.
Il reste donc:
- 1 adulte;
- 1 enfant.
Le programme doit ajouter ces visiteurs restants au tarif correspondant. La formule dépend du tarif individuel retenu pour les personnes hors pack. Dans cet exercice, on peut utiliser le tarif Liberté afin de conserver une règle explicite:
\[
110{,}80 + 1 \times 32{,}90 + 1 \times 27{,}50 = 171{,}20
\]
Il faut d’abord vérifier que le groupe peut recevoir un Pack Tribu. La condition minimale est:
adultes ≥ 2;- et
enfants ≥ 3.
Dans Scratch, une condition double utilise l’opérateur logique et.
Si ces deux conditions sont vraies:
1. mettre nombre packs à 1;
2. mettre reste adultes à adultes - 2;
3. mettre reste enfants à enfants - 3;
4. mettre total entree à 110.8 + reste adultes × 32.9 + reste enfants × 27.5.
Sinon, le programme doit refuser le Pack Tribu et revenir vers un tarif individuel. Il ne doit jamais calculer un nombre négatif de visiteurs restants.
Une version avancée: plusieurs Packs Tribu
Le tarif annonce un pack couvrant 2 adultes et 3 enfants. Un simulateur de niveau collège peut s’arrêter à un seul pack. Mais une version plus rigoureuse peut calculer plusieurs packs.
Le nombre maximal de packs dépend de la catégorie la moins disponible:
- un pack consomme 2 adultes;
- un pack consomme 3 enfants.
Donc:
\[
\text{nombre packs} = \min\left(\left\lfloor\frac{\text{adultes}}{2}\right\rfloor,\left\lfloor\frac{\text{enfants}}{3}\right\rfloor\right)
\]
Scratch ne propose pas directement une fonction « partie entière » simple dans tous les contextes. Il est alors plus clair d’utiliser une boucle.
1. Mettre nombre packs à 0.
2. Répéter tant que adultes ≥ 2 et enfants ≥ 3.
3. Retirer 2 à adultes.
4. Retirer 3 à enfants.
5. Ajouter 1 à nombre packs.
6. À la fin, calculer les visiteurs restants.
Attention: cette méthode modifie les variables adultes et enfants. C’est acceptable, mais il faut alors conserver les valeurs initiales dans adultes départ et enfants départ si elles doivent encore être affichées.
Une alternative plus propre consiste à travailler sur reste adultes et reste enfants, dès le début. Les données saisies restent intactes.
Ajouter le Camion Brousse au bon total
Le Camion Brousse coûte 10 € par personne. C’est un supplément. Il ne remplace pas le billet d’entrée.
L’erreur classique est la suivante: le programme calcule uniquement participants camion × 10, puis affiche ce résultat comme prix final. Il manque alors tous les billets.
La formule correcte est:
\[
\text{total final} = \text{total entrée} + \text{total camion}
\]
avec:
\[
\text{total camion} = 10 \times \text{participants camion}
\]
Il faut aussi contrôler le nombre de participants au Camion Brousse. Il ne peut pas dépasser le nombre total de visiteurs, soit:
\[
\text{adultes} + \text{enfants} + \text{bebes}
\]
La présence des bébés dans ce contrôle dépend de la règle retenue pour l’option. Ici, la donnée tarifaire indique 10 € par personne, adulte ou enfant. Elle ne précise pas explicitement le cas des moins de 3 ans pour cette option. Le simulateur pédagogique doit donc choisir une convention claire.
La solution la plus prudente est de demander:
« Nombre d’adultes et d’enfants prenant le Camion Brousse? »
Puis de vérifier:
\[
\text{participants camion} \leq \text{adultes} + \text{enfants}
\]
Les bébés ne sont alors pas comptés dans cette variable. Le programme ne suppose pas une gratuité ou un paiement non confirmé pour l’option.
Si le nombre saisi est supérieur au nombre de visiteurs payants, afficher:
« Erreur: le nombre de participants au Camion Brousse est impossible. »
Puis remettre participants camion à 0 ou reposer la question.
Afficher un résultat lisible
Un simulateur utile ne se contente pas d’annoncer un nombre isolé. Il doit séparer les étapes du calcul.
À la fin du programme, afficher successivement:
- le nombre d’adultes;
- le nombre d’enfants;
- le nombre de bébés gratuits;
- le prix de l’entrée;
- le prix du Camion Brousse;
- le total final.
Les messages peuvent suivre cet ordre:
1. « Entrées: » suivi de total entree.
2. « Option Camion Brousse: » suivi de total camion.
3. « Total à payer: » suivi de total final.
Scratch peut afficher beaucoup de décimales selon les opérations effectuées. Si le résultat obtenu est 100.799999999, le calcul mathématique est correct, mais l’affichage est mauvais. Pour limiter ce défaut, arrondir le total au centime.
Le principe est:
\[
\frac{\text{arrondi}(100 \times \text{total final})}{100}
\]
Dans Scratch, cela revient à multiplier par 100, utiliser le bloc arrondi, puis diviser par 100.
Tester le programme avec des cas ciblés
Un simulateur n’est pas validé parce qu’il fonctionne une fois. Il faut choisir des cas qui déclenchent chaque condition.
Voici une série de tests minimale.
1. Un adulte, aucun enfant, aucun bébé, billet Liberté
Résultat attendu: 32,90 €.
Ce test vérifie le tarif adulte de base.
2. Aucun adulte, un enfant, deux bébés, billet Futé
Résultat attendu: 22,50 €.
Les bébés ne doivent rien ajouter.
3. Deux adultes, trois enfants, formule Tribu
Résultat attendu: 110,80 €.
Aucun visiteur supplémentaire ne doit être facturé.
4. Trois adultes, quatre enfants, formule Tribu
Résultat attendu: 171,20 € si les visiteurs hors pack sont comptés au tarif Liberté.
Le programme doit calculer les restes: un adulte et un enfant.
5. Deux adultes, deux enfants, billet Futé, trois participants au Camion Brousse
Entrées: 100,80 €.
Option: 30 €.
Résultat attendu: 130,80 €.
6. Un adulte, un enfant, formule Tribu
Le programme ne doit pas appliquer le pack. Les conditions minimales ne sont pas remplies.
7. Deux adultes, un enfant, trois participants au Camion Brousse
Le nombre de participants est possible.
En revanche, quatre participants doit déclencher une erreur si seuls adultes et enfants sont autorisés pour cette option.
Ces tests ne sont pas décoratifs. Chaque test correspond à une branche du programme: gratuité, tarif réduit, pack applicable, pack impossible, option, saisie incohérente.
Le test final: refaire le calcul hors programme
Le dernier contrôle est rapide. Prendre une situation complète et effectuer le calcul sur papier.
Exemple:
- 3 adultes;
- 4 enfants;
- 1 bébé;
- Pack Tribu;
- 5 participants au Camion Brousse.
Le Pack couvre 2 adultes et 3 enfants. Il reste 1 adulte et 1 enfant.
\[
110{,}80 + 32{,}90 + 27{,}50 = 171{,}20
\]
Le Camion Brousse ajoute:
\[
5 \times 10 = 50
\]
Donc:
\[
171{,}20 + 50 = 221{,}20
\]
Si Scratch affiche 221,20 €, les conditions principales sont cohérentes. S’il affiche un autre montant, ne pas modifier les chiffres au hasard. Reprendre dans cet ordre: catégories de visiteurs, formule sélectionnée, visiteurs restants après le pack, puis option.
Le programme exécute exactement les règles qu’on lui donne. Le simulateur des tarifs du Safari de Peaugres est donc juste seulement si les variables sont séparées, si les conditions sont ordonnées et si chaque total est vérifié par un calcul indépendant.
Questions fréquentes
Comment gérer la gratuité des bébés dans le simulateur ?
Quelle est la méthode pour calculer le Pack Tribu ?
Comment éviter les erreurs d'affichage avec les nombres décimaux dans Scratch ?
Pourquoi faut-il initialiser les variables au début du programme ?
Comment intégrer l'option Camion Brousse sans erreur ?
Photo: No machine-readable author provided. Vacnor assumed (based on copyright claims). / CC BY-SA 3.0 — Wikimedia Commons