Horaires du Musée Bata : le script Scratch pour bien choisir
L’erreur la plus fréquente consiste à confondre deux conditions différentes…

Horaires du Musée Bata: le script Scratch pour bien choisir
L’erreur la plus fréquente consiste à confondre deux conditions différentes:
TorontoBillets et tarifs
Musée Bata de la chaussure
Billet d'entrée — disponible aujourd'hui et demain
dès16.03 CAD
Réserver des billetsBillet officiel — entrée générale adulte
dès16 CAD
Réserver des billetsBilletterie officielle et achat en ligne
- le musée est-il ouvert;
- le billet est-il gratuit.
Pour le Musée Bata de la chaussure à Toronto, ces conditions ne produisent pas le même résultat. Le dimanche, l’entrée est gratuite pour tous les visiteurs, mais les horaires commencent à midi. Du lundi au samedi, le musée ouvre dès 10 h, mais l’entrée suit une autre logique tarifaire.
La règle brute est donc la suivante:
Un bon choix de créneau dépend d’abord du jour, puis de l’heure, puis du profil du visiteur.
Cette situation est adaptée à un exercice d’algorithmique. Il faut déclarer des variables, appliquer des conditions, gérer les cas particuliers et vérifier le résultat. Scratch permet de visualiser chaque étape sans masquer la logique.
Les horaires du Musée Bata de la chaussure
Le Musée Bata de la chaussure se trouve au 327 Bloor Street West, à Toronto. La station de métro St. George est située à environ une minute à pied. La localisation simplifie l’accès, mais elle ne modifie pas les conditions d’ouverture.
Les horaires réguliers sont les suivants:
| Jour | Ouverture | Fermeture | Règle particulière |
|---|---|---|---|
| Lundi à samedi | 10 h 00 | 17 h 00 | Entrée selon le profil du visiteur |
| Dimanche | 12 h 00 | 17 h 00 | Entrée gratuite pour tous |
| 25 décembre | Fermé | Fermé | Fermeture annuelle |
| 26 décembre | Fermé | Fermé | Fermeture annuelle |
| 1er janvier | Fermé | Fermé | Fermeture annuelle |
La première variable utile est donc jour. La deuxième est heure. La troisième peut être date, si le programme doit gérer les fermetures annuelles.
L’ordre des tests est déterminant.
1. Tester d’abord si la date correspond à une fermeture annuelle.
2. Sinon, déterminer le jour de la semaine.
3. Ensuite, comparer l’heure à l’intervalle d’ouverture.
4. Enfin, calculer la règle d’entrée applicable.
Si l’algorithme commence par le tarif, il peut annoncer une entrée gratuite alors que le musée est fermé. Le calcul serait techniquement exécuté, mais le résultat serait faux.
Transformer l’heure en nombre
Scratch compare plus facilement des nombres que des textes. Il est donc préférable de convertir l’heure en une valeur numérique.
Exemples:
- 10 h 00 devient
10; - 12 h 30 devient
12,5; - 16 h 45 devient
16,75.
Pour convertir des minutes en fraction d’heure, il faut appliquer la formule:
heure décimale = heure + minutes / 60
Ainsi:
- 10 h 30 donne
10 + 30 / 60, donc10,5; - 16 h 15 donne
16 + 15 / 60, donc16,25.
Cette conversion évite une erreur classique. Comparer séparément les heures et les minutes demande davantage de blocs et multiplie les risques de mauvaise priorité opératoire.
Si l’heure est saisie sous la forme 16 h 45, le programme peut utiliser deux variables:
heure;minutes.
La condition d’ouverture devient alors plus précise:
- du lundi au samedi:
heure > 10ouheure = 10 et minutes >= 0, puisheure < 17; - le dimanche:
heure >= 12etheure < 17.
Dans un exercice de collège, une heure entière suffit généralement. Il faut cependant connaître la limite du modèle: avec heure = 17, le programme doit conclure que le musée est fermé. L’intervalle est ouvert à gauche et fermé à droite:
10 <= heure < 17
Le musée accueille donc les visiteurs à partir de 10 h, mais pas à 17 h.
Modéliser les tarifs sans mélanger les catégories
Le prix dépend du profil du visiteur. Les catégories disponibles sont distinctes:
- adulte;
- sénior;
- étudiant de 18 ans ou plus, avec une carte valide;
- enfant de 5 à 17 ans;
- enfant de 0 à 4 ans.
La gratuité du dimanche s’applique à tous les visiteurs. Elle doit donc être testée avant la catégorie individuelle.
La structure logique est:
1. Si le jour est dimanche, alors l’entrée est gratuite.
2. Sinon, si l’âge est compris entre 0 et 4 ans, alors l’entrée est gratuite.
3. Sinon, identifier le profil tarifaire.
4. Si aucune catégorie ne correspond, demander une correction de la saisie.
La priorité des opérateurs doit rester explicite. La condition suivante est correcte pour un enfant de 5 à 17 ans:
âge >= 5 et âge <= 17
La condition suivante est incorrecte si elle est écrite sans parenthèses:
âge >= 5 ou âge <= 17
Elle est presque toujours vraie. Un âge de 40 vérifie âge >= 5. Un âge de 2 vérifie âge <= 17. Le programme classerait donc presque tout le monde dans la catégorie enfant.
La méthode consiste à traduire chaque intervalle avec deux bornes reliées par et.
Les catégories comme variable
Deux modèles sont possibles.
Modèle 1: utiliser l’âge
Le programme demande l’âge et déduit la catégorie:
- si
âge <= 4, catégorietrès jeune enfant; - sinon, si
âge <= 17, catégorieenfant; - sinon, demander si la personne est étudiante ou sénior;
- sinon, catégorie
adulte.
Ce modèle est simple, mais il ne suffit pas à distinguer un étudiant adulte d’un adulte sans réduction. Une variable supplémentaire est nécessaire.
Modèle 2: utiliser une catégorie saisie
Le programme demande directement une catégorie parmi:
adulte;sénior;étudiant;enfant.
Ce modèle réduit les calculs, mais il exige une saisie correcte. Une faute comme Etudiant ou eleve peut empêcher la comparaison avec la valeur attendue.
Pour un programme Scratch destiné à l’apprentissage, le premier modèle est plus intéressant. Il fait apparaître les conditions imbriquées et oblige à traiter les cas limites.
La gratuité est une règle de priorité. Elle doit être calculée avant le tarif individuel.
Concevoir l’algorithme de sélection d’un créneau
Le programme ne doit pas seulement répondre à la question du tarif. Il doit produire une décision complète:
- visite possible ou non;
- créneau compatible ou non;
- gratuité ou tarif selon le profil;
- motif du refus si la visite ne peut pas avoir lieu.
La variable principale peut s’appeler résultat. Elle reçoit une phrase finale. Les autres variables servent au calcul intermédiaire:
date;jour;heure;âge;étudiant;fermé;entrée.
Étape 1: vérifier les fermetures annuelles
Le programme doit tester les trois dates connues:
- 25 décembre;
- 26 décembre;
- 1er janvier.
Dans Scratch, une seule variable texte peut contenir la date. Le test peut être construit avec des blocs ou:
date = 25 décembre ou date = 26 décembre ou date = 1er janvier
Si la condition est vraie, le programme affiche que le musée est fermé. Il arrête ensuite le traitement. Il n’est pas nécessaire de calculer le tarif.
Une autre méthode consiste à créer une variable booléenne fermé:
1. mettre fermé à non;
2. si la date correspond à une fermeture, mettre fermé à oui;
3. si fermé = oui, annoncer la fermeture;
4. sinon, poursuivre.
La deuxième méthode est plus longue. Elle devient utile si le programme doit réutiliser la variable dans plusieurs blocs.
Étape 2: déterminer l’amplitude horaire
Le jour de la semaine peut être saisi sous forme de texte. Les valeurs possibles sont:
- lundi;
- mardi;
- mercredi;
- jeudi;
- vendredi;
- samedi;
- dimanche.
La règle est ensuite divisée en deux branches:
- si
jour = dimanche, alors l’ouverture commence à 12 h; - sinon, l’ouverture commence à 10 h.
Dans les deux cas, la fermeture intervient à 17 h.
Le test peut être écrit sous forme mathématique:
- dimanche:
12 <= heure < 17; - autre jour:
10 <= heure < 17.
Un créneau à 9 h 30 est refusé du lundi au samedi. Un créneau à 11 h 30 est refusé le dimanche. Un créneau à 16 h 30 est accepté dans les deux cas, sous réserve des autres règles de visite.
Étape 3: appliquer la règle de gratuité
Une fois l’ouverture confirmée, le programme teste le jour.
Si jour = dimanche, alors:
entrée = gratuite.
Aucune question supplémentaire sur l’âge ou le statut n’est nécessaire pour déterminer la gratuité générale du dimanche. Le programme peut néanmoins continuer à demander ces informations si elles servent à une autre partie de l’exercice.
Si le jour n’est pas dimanche, la règle dépend du profil.
- De 0 à 4 ans: gratuit.
- De 5 à 17 ans: catégorie enfant.
- Étudiant de 18 ans ou plus avec carte valide: catégorie étudiant.
- Sénior: catégorie sénior.
- Sinon: catégorie adulte.
La carte étudiante doit être modélisée par une variable logique. Elle peut prendre deux valeurs:
oui;non.
La condition complète devient:
âge >= 18 et étudiant = oui
Le mot et est nécessaire. Une personne de 17 ans qui possède une carte ne doit pas être automatiquement classée dans la catégorie étudiant adulte selon cette règle.
Construire le script Scratch
Scratch ne manipule pas directement un algorithme abstrait. Il faut convertir chaque opération en bloc. L’ordre reste identique.
Variables à créer
Créer les variables suivantes:
jour;heure;âge;étudiant;date;entrée;message.
Les variables jour, date et étudiant reçoivent des textes. Les variables heure et âge reçoivent des nombres.
Le programme doit contrôler les valeurs saisies. Une heure négative ou supérieure à 24 est invalide. Un âge négatif est invalide. Une valeur textuelle dans la variable heure peut aussi provoquer une comparaison incohérente.
Séquence d’instructions
Le déroulement peut être organisé ainsi:
1. Demander la date.
2. Demander le jour.
3. Demander l’heure.
4. Vérifier la fermeture annuelle.
5. Vérifier l’ouverture selon le jour.
6. Demander l’âge si la visite est possible.
7. Demander le statut étudiant pour les visiteurs concernés.
8. Déterminer l’entrée.
9. Afficher le résultat.
10. Effectuer un test de vérification.
Cette séquence réduit le nombre de questions inutiles. Si la date correspond au 25 décembre, il n’est pas nécessaire de demander l’âge. Le programme s’arrête après l’annonce de la fermeture.
Pseudocode du mécanisme
Le pseudocode ne remplace pas les blocs Scratch. Il fixe la logique avant la construction.
1. Lire date.
2. Si date est une date de fermeture, alors afficher musée fermé et arrêter.
3. Lire jour.
4. Lire heure.
5. Si jour = dimanche, alors:
- si
heure < 12ouheure >= 17, affichercréneau fermé; - sinon, afficher
visite possibleetentrée gratuite.
6. Sinon:
- si
heure < 10ouheure >= 17, affichercréneau fermé; - sinon, lire
âge; - si
âge <= 4, afficherentrée gratuite; - sinon, déterminer la catégorie du visiteur.
7. Afficher le résultat final.
8. Vérifier la cohérence avec un cas connu.
Il faut remarquer la structure. Les conditions de fermeture se trouvent à l’extérieur. Les conditions de tarif se trouvent à l’intérieur de la branche où la visite est possible.
Traduction en conditions Scratch
La condition de refus hors horaires peut utiliser ou:
heure < heureOuverture ou heure >= 17
La variable heureOuverture peut être définie ainsi:
- mettre
heureOuvertureà10; - si
jour = dimanche, mettreheureOuvertureà12.
Le test devient alors général:
heure < heureOuverture ou heure >= 17
Cette version évite de dupliquer la comparaison finale. Le programme possède une seule valeur de référence pour l’ouverture.
Une seconde variable, raison, peut préciser le résultat:
raison = date de fermeture;raison = avant ouverture;raison = après fermeture;raison = entrée gratuite;raison = catégorie tarifaire.
La séparation entre entrée et raison améliore la lisibilité. Une variable ne doit pas contenir plusieurs types d’information contradictoires.
Les erreurs de logique les plus courantes
Un programme de planification de visite échoue rarement à cause d’un bloc complexe. Les erreurs viennent des priorités et des bornes.
Inverser l’ordre des tests
Erreur:
1. calculer le tarif du dimanche;
2. annoncer la gratuité;
3. vérifier ensuite l’horaire.
Conséquence: le programme peut annoncer une entrée gratuite à 9 h un dimanche, alors que le musée n’est pas encore ouvert.
Correction: tester l’ouverture avant de conclure sur l’accès.
Inclure 17 h dans la période d’ouverture
Erreur:
heure >= 10 et heure <= 17
Cette expression accepte 17 h. Or la fermeture est indiquée à 17 h. Pour ne pas inclure cette heure, utiliser:
heure >= 10 et heure < 17
Même correction le dimanche:
heure >= 12 et heure < 17
Confondre dimanche et gratuité
Le dimanche est gratuit, mais il ne commence pas à 10 h. Il commence à 12 h. Deux variables sont donc nécessaires:
- une variable pour le jour;
- une variable pour l’heure d’ouverture.
La gratuité et l’horaire sont liés par le jour, mais ce ne sont pas la même propriété.
Oublier les fermetures annuelles
Un programme qui connaît seulement les jours de la semaine peut accepter une visite le 25 décembre. Il est alors incomplet.
La date exacte doit être testée avant la règle hebdomadaire. Une fermeture exceptionnelle ou annuelle possède une priorité supérieure à l’horaire régulier.
Mal classer les âges limites
Les bornes doivent être écrites sans ambiguïté:
0 <= âge <= 4;5 <= âge <= 17;âge >= 18.
Les valeurs 4, 5, 17 et 18 sont les tests indispensables. Elles permettent de vérifier que les intervalles ne se chevauchent pas et qu’aucun âge n’est oublié.
Demander une carte étudiante sans condition
Si le programme demande systématiquement une carte étudiante, il ajoute une question inutile à un enfant ou à un sénior. Une entrée utilisateur doit être déclenchée uniquement quand elle sert au calcul.
La structure correcte est:
1. demander l’âge;
2. si l’âge est supérieur ou égal à 18, demander le statut étudiant;
3. sinon, ne pas demander ce statut.
Cela illustre la notion de condition imbriquée.
Ajouter la localisation au programme
L’adresse du musée est fixe: 327 Bloor Street West, Toronto, Ontario. La station de métro St. George se trouve à proximité immédiate. Ces informations peuvent être affichées à la fin du programme, après la sélection du créneau.
Il ne faut pas les intégrer dans le calcul d’ouverture. La localisation ne décide pas si la visite est possible. Elle sert à préparer le déplacement.
La sortie peut être structurée en quatre lignes:
Créneau: dimanche, 13 hAccès: visite possibleEntrée: gratuiteAdresse: 327 Bloor Street West, Toronto
Cette séparation évite de mélanger les variables temporelles, tarifaires et géographiques.
Un niveau supplémentaire peut être ajouté avec une variable transport:
métro;autre.
Si l’utilisateur choisit le métro, le programme indique la station de référence. Sinon, il affiche seulement l’adresse. Cette extension ne change pas l’algorithme principal. Elle ajoute une branche indépendante après le calcul.
Le parcours culturel peut aussi être élargi au secteur de Bloor Street, mais cette information ne doit pas modifier le verdict du script. Un algorithme fiable sépare les données nécessaires de celles qui sont seulement utiles.
Tester le programme avec des cas limites
Un test unique ne prouve rien. Il faut choisir des entrées qui couvrent les branches principales et les frontières.
| Test | Jour | Heure | Date | Résultat attendu |
|---|---|---|---|---|
| 1 | Lundi | 10 h | Date normale | Visite possible |
| 2 | Lundi | 9 h | Date normale | Musée fermé à cette heure |
| 3 | Lundi | 17 h | Date normale | Musée fermé à cette heure |
| 4 | Dimanche | 11 h | Date normale | Musée fermé avant midi |
| 5 | Dimanche | 12 h | Date normale | Visite possible et entrée gratuite |
| 6 | Dimanche | 16 h | Date normale | Visite possible et entrée gratuite |
| 7 | Dimanche | 17 h | Date normale | Musée fermé à cette heure |
| 8 | Mardi | 14 h | 25 décembre | Musée fermé pour fermeture annuelle |
| 9 | Mercredi | 14 h | Date normale | Tarif selon le profil |
| 10 | Samedi | 14 h | Date normale | Tarif selon le profil |
Les tests 1, 3, 4, 5 et 7 contrôlent les bornes horaires. Les tests 8 vérifient la priorité de la date de fermeture. Les tests 9 et 10 contrôlent la branche tarifaire hors dimanche.
Pour les catégories d’âge, ajouter quatre tests:
- âge 4;
- âge 5;
- âge 17;
- âge 18.
Puis tester le statut étudiant avec un âge de 18 ans. Le programme doit distinguer:
- 18 ans avec carte valide;
- 18 ans sans carte valide.
La vérification rapide finale suit trois questions:
1. Le programme refuse-t-il une heure avant l’ouverture?
2. Le programme accepte-t-il midi le dimanche et applique-t-il la gratuité?
3. Le programme refuse-t-il une visite le 25 décembre, quelle que soit l’heure?
Si une réponse est incorrecte, l’erreur se trouve dans l’ordre des conditions, dans une borne ou dans la valeur de la variable jour.
Le test le plus efficace porte sur la frontière: 10 h, 12 h, 17 h, puis 25 décembre.
Rendre le script plus robuste
Un script pédagogique peut fonctionner avec des saisies parfaitement formatées. Un script robuste doit aussi gérer les erreurs d’entrée.
Contrôler le jour
Les valeurs autorisées doivent être limitées aux sept jours de la semaine. Si l’utilisateur saisit une autre valeur, le programme affiche une demande de correction.
La logique est:
1. lire jour;
2. vérifier que jour appartient à la liste autorisée;
3. recommencer la saisie si la valeur est invalide.
Scratch peut utiliser une boucle répéter jusqu’à. La boucle s’arrête uniquement quand la donnée respecte la condition.
Contrôler l’heure
Pour une heure entière, la valeur doit être comprise entre 0 et 23. Pour une heure décimale, une valeur comme 16,5 est acceptable si le format est défini dès le départ.
Il faut choisir un seul format. Mélanger 16,5 et 16 h 30 dans la même variable crée une ambiguïté. L’algorithme ne peut pas comparer correctement un nombre et une chaîne de caractères sans conversion.
Contrôler l’âge
Un âge négatif doit être refusé. Une valeur très élevée peut être techniquement acceptée, mais elle doit rester un nombre. La condition minimale est:
âge >= 0
Si l’exercice demande une modélisation complète, le programme peut aussi signaler une valeur non réaliste. Cette limite n’est pas une règle du musée. C’est une règle de qualité de saisie.
Éviter les variables inutiles
Chaque variable doit avoir une fonction:
jourdétermine l’horaire et éventuellement la gratuité;heuredétermine le créneau;datedétecte les fermetures annuelles;âgedétermine une catégorie;étudiantprécise le profil adulte;entréecontient le résultat tarifaire;messageorganise l’affichage.
Une variable qui contient successivement le jour, le prix et l’adresse rend le programme difficile à vérifier. La spécialisation des variables réduit les erreurs.
Une extension: choisir automatiquement le meilleur créneau
Le programme peut recevoir plusieurs créneaux et sélectionner le premier qui respecte les contraintes.
Exemple de données:
- lundi à 9 h;
- dimanche à 11 h;
- dimanche à 13 h;
- samedi à 15 h.
Pour chaque créneau, le programme applique la même fonction logique:
1. la date est-elle autorisée;
2. le jour détermine-t-il l’heure d’ouverture;
3. l’heure appartient-elle à l’intervalle;
4. le dimanche apporte-t-il la gratuité;
5. sinon, le profil du visiteur détermine-t-il la catégorie.
Une boucle parcourt les créneaux. Dès qu’un créneau valide est trouvé, le programme peut le mémoriser dans meilleurCréneau.
Il faut alors ajouter une règle de sélection. Par exemple:
- choisir le premier créneau valide;
- choisir le créneau le plus tôt;
- choisir un dimanche si la gratuité est prioritaire;
- choisir un horaire après 12 h si le déplacement est fixé au dimanche.
La règle de préférence doit être séparée de la règle de validité. Un créneau peut être valide sans être préférable.
Cette distinction est fondamentale:
validerépond à la question: la visite est-elle possible?préférérépond à la question: ce créneau est-il le meilleur parmi les créneaux possibles?
Un algorithme qui mélange les deux décisions devient difficile à modifier.
Préparer concrètement la visite
Le calcul ne remplace pas la vérification des informations avant le départ. Les horaires réguliers indiquent une ouverture du lundi au samedi de 10 h à 17 h, et le dimanche de midi à 17 h. Les fermetures annuelles connues concernent le 25 décembre, le 26 décembre et le 1er janvier.
Les billets et les éventuelles options de visite peuvent être consultés séparément. Les disponibilités et les conditions commerciales évoluent plus vite que la logique du programme. Le script doit donc travailler avec des catégories et des règles, pas avec des montants figés.
Pour une réservation en ligne, les billets d’entrée du Musée Bata de la chaussure peuvent présenter plusieurs options selon la disponibilité. Le programme Scratch reste indépendant de cette réservation: il sélectionne un créneau cohérent, mais il ne confirme pas une place.
La localisation doit enfin être recopiée avec précision:
- 327 Bloor Street West;
- Toronto;
- Ontario;
- station de métro St. George à proximité.
Une adresse erronée ne provoque pas une erreur de calcul. Elle provoque une erreur de déplacement. Le contrôle final doit donc porter sur les données numériques et sur les données textuelles.
Conclusion: une règle simple, une priorité stricte
La planification d’une visite au Musée Bata de la chaussure peut être décrite par un algorithme court, à condition de respecter l’ordre des opérations.
1. Vérifier la date de fermeture.
2. Déterminer l’heure d’ouverture selon le jour.
3. Refuser les créneaux avant l’ouverture ou à partir de 17 h.
4. Appliquer la gratuité du dimanche.
5. Sinon, déterminer la catégorie du visiteur.
6. Afficher l’adresse et le résultat.
7. Tester les bornes: 10 h, 12 h, 17 h et les dates de fermeture.
La règle décisive est la priorité des conditions. Une date fermée bloque tout. Un horaire invalide bloque le tarif. La gratuité du dimanche intervient seulement après validation du créneau.
Test final: saisir dimanche, 13 h, une date normale. Le programme doit répondre que la visite est possible et que l’entrée est gratuite. Saisir ensuite dimanche, 11 h. Le résultat doit changer: le musée n’est pas encore ouvert. Si ces deux sorties sont correctes, la structure principale est cohérente.
Infos pratiques
Monnaie : CAD
Conduite : à droite
Numéro d'urgence : 911
Questions fréquentes
Quels sont les horaires d'ouverture du Musée Bata ?
Le Musée Bata est-il ouvert tous les jours ?
L'entrée est-elle gratuite le dimanche au Musée Bata ?
Comment classer les visiteurs par âge pour le tarif ?
Où se situe le Musée Bata de la chaussure ?
Photo: Gisling / CC BY-SA 3.0 — Wikimedia Commons