Dans cet article je vous propose un exercice type bac pour vous préparer à l’épreuve de l’enseignement de spécialité « numérique et sciences informatiques » (NSI) de la classe de terminale de la voie générale.
Nature de l’épreuve
L’épreuve terminale obligatoire de spécialité est composée de deux parties : une partie écrite, comptant pour 12 points sur 20, et une partie pratique comptant pour 8 points sur 20.
La note globale de l’épreuve est donnée sur 20 points.
Partie écrite
Durée : 3 heures 30
Modalités
La partie écrite consiste en la résolution de trois exercices permettant d’évaluer les connaissances et les capacités attendues conformément aux programmes de première et de terminale de la spécialité. Chaque exercice est noté sur 4 points.
Le sujet propose cinq exercices, parmi lesquels le candidat choisit les trois qu’il traitera. Ces cinq exercices permettent d’aborder les différentes rubriques du programme, sans obligation d’exhaustivité. Le sujet comprend obligatoirement au moins un exercice relatif à chacune des trois rubriques suivantes : traitement de données en tables et bases de données ; architectures matérielles, systèmes d’exploitation et réseaux ; algorithmique, langages et programmation.
Une entreprise loue des bateaux à rames sur un lac. La société possède 17 bateaux numérotés de 1 à 17. Les bateaux peuvent être loués entre 9 heures et 18 heures, pour une durée maximale de 90 minutes. La société développe un programme pour aider à gérer et à enregistrer le processus de location de bateaux.
Le programmeur a décidé de stocker toutes les valeurs relatives au temps de location sous forme de chaînes. Le programme utilisera un format d’horloge de 24 heures. Par exemple :
Heure (en lettres)
Valeur de la chaîne
9 heures du matin
“09:00”
10 heures et 5 minutes
“10:05”
14 heures et 50 minutes
“14:50”
Le programmeur a défini la première fonction comme suit :
Fonction
Description
AddTime()
Prend deux paramètres:
StartTime : une valeur STRING représentant un temps comme décrit,
Duration : une valeur INTEGER représentant une durée en minutes
Ajoute la durée au temps pour donner un nouveau temps
Retourne le nouveau temps comme STRING
Travail demandé
Écrivez le pseudocode de la fonction AddTime(). Supposons que les deux paramètres d’entrée soient valides.
Indiquez la raison pour laquelle vous utilisez le test de la boîte blanche.
Une erreur d’exécution est un type d’erreur que les tests de la boîte noire peuvent révéler. Décrivez un autre type d’erreur que les tests de la boîte noire peuvent révéler.
L’utilisateur saisira l’heure de début souhaitée d’une location. Un nouveau module sera écrit pour valider la chaîne de saisie comme une heure valide au format horloge 24 heures. La chaîne est déjà confirmée comme étant au format “NN:NN”, où N est un caractère numérique.
4. Donnez un exemple de données d’essai appropriées qui sont dans ce format mais qui ne sont pas valides. Expliquez votre réponse :
Chaque fois qu’un bateau est loué, les détails de la location sont ajoutés à un fichier texte, Hirelog.txt.
Chaque ligne du fichier texte correspond à des informations sur une session de location.
Le format de chaque ligne est le suivant :
<BoatNumber><Date><AmountPaid>
BoatNumber est une chaîne numérique à deux chiffres,
Date est une chaîne numérique à six chiffres au format DDMMYY,
AmountPaid est une chaîne de longueur variable représentant une valeur numérique, par exemple “12.75”.
Le montant total de la location de chaque bateau doit être stocké dans un tableau global, Total. Ce tableau est déclaré en pseudo-code comme suit :
DECLARE Total : ARRAY [1:17] OF REAL
Le programmeur a défini la fonction GetTotals() comme suit :
Fonction
Description
GetTotals()
– Recherche dans le fichier Hirelog.txt – Extraction du montant payé chaque fois qu’un bateau est loué – Stockage du total du montant payé pour chaque bateau dans le tableau
5. Écrivez le code du programme en Python pour la fonction GetTotals().