Devoir pratique STI n°1 : la page du panier d'une librairie en ligne, ses lignes et le montant à payer en JavaScript
Écris tes programmes en Python ou en algorithme et vérifie-les tout de suite, puis ouvre la correction exercice par exercice.
Le travail se fait sur ordinateur. Les deux exercices écrivent le fichier panier.js de la page du panier de la librairie du lycée, donnée à l'exercice 1 : l'exercice 1 construit les lignes du tableau, l'exercice 2 calcule le montant à payer affiché sous le tableau. Les fonctions se testent dans la console du navigateur et avec les boutons de la page. Barème sur 20 points.
Exercice 1 : les lignes du panier (8 pts)
La librairie en ligne du lycée affiche le panier dans un tableau HTML : c'est la page panier.html suivante, reliée au fichier panier.js. Son bouton « Afficher le panier » appelle la fonction afficher(), donnée dans la page. Les prix sont en dinars, avec trois chiffres après la virgule (les millimes). Le style de la page contient la règle .total { font-weight: bold; } pour la cellule du total de chaque ligne.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Mon panier</title>
<style>
.total { font-weight: bold; }
</style>
</head>
<body>
<h1>Librairie du lycée : mon panier</h1>
<table border="1">
<thead><tr><th>Article</th><th>Prix</th><th>Quantité</th><th>Total</th></tr></thead>
<tbody id="lignes"></tbody>
</table>
<input type="button" id="afficher" onclick="afficher()" value="Afficher le panier">
<input type="button" id="plus" onclick="unStyloDePlus()" value="Un stylo de plus">
<p id="apayer"></p>
<script>
var noms = ["Cahier", "Sac", "Stylo"];
var prix = [2.5, 45, 0.75];
var qtes = [3, 1, 4];
function afficher() {
var html = "";
for (var i = 0; i < noms.length; i++) {
html = html + ligneProduit(noms[i], prix[i], qtes[i]);
}
document.getElementById("lignes").innerHTML = html;
document.getElementById("apayer").innerHTML = "À payer : " + formatPrix(aPayer(prix, qtes));
}
function unStyloDePlus() {
qtes[2] = qtes[2] + 1;
afficher();
}
</script>
<script src="panier.js"></script>
</body>
</html>
- 1) Écrire la fonction ecrire3(x) qui renvoie une chaîne : le nombre x (positif ou nul) écrit avec exactement trois chiffres après la virgule, sans utiliser la méthode toFixed (3 pts).
- 2) Écrire la fonction formatPrix(x) qui renvoie le prix x écrit avec ecrire3, suivi d'un espace et de DT (1 pt).
- 3) Écrire la fonction ligneProduit(nom, prix, qte) qui renvoie le code HTML d'une ligne du tableau : le nom, le prix unitaire et le total (prix × qte) écrits avec formatPrix, et la quantité ; la cellule du total a la classe total (4 pts).
Indication : Math.round(x * 1000) donne le prix en millimes. Les dinars sont la partie entière de sa division par 1000, les millimes le reste de cette division, écrit sur trois chiffres.
Exemples : ecrire3(7.5) donne 7.500 et ecrire3(7.05) donne 7.050 ; formatPrix(7.5) donne 7.500 DT ; ligneProduit("Cahier", 2.5, 3) donne <tr><td>Cahier</td><td>2.500 DT</td><td>3</td><td class="total">7.500 DT</td></tr>.
Exercice 2 : le total à payer (12 pts)
Dans la page panier.html de l'exercice 1, le panier est donné par deux tableaux de même longueur : prix (le prix unitaire de chaque article, en dinars) et qtes (la quantité de chaque article), ici prix = [2.5, 45, 0.75] et qtes = [3, 1, 4]. Sous le tableau, la page écrit « À payer : 52.725 DT » avec formatPrix (exercice 1) et aPayer. Les fonctions suivantes s'ajoutent à panier.js.
La boutique fait une remise de 10 % sur un panier de 100 DT ou plus, de 5 % sur un panier de 50 DT ou plus, et aucune remise en dessous. Les montants sont arrondis au millime (trois chiffres après la virgule).
- 1) Écrire la fonction totalPanier(prix, qtes) qui renvoie la somme des prix[i] × qtes[i], arrondie au millime (4 pts).
- 2) Écrire la fonction remise(total) qui renvoie le montant de la remise pour un panier de ce total, arrondi au millime (4 pts).
- 3) Écrire la fonction aPayer(prix, qtes) qui renvoie le montant à payer : le total du panier moins la remise, arrondi au millime (4 pts).
Exemples : totalPanier([2.5, 45, 0.75], [3, 1, 4]) donne 55.5, remise(55.5) donne 2.775 et aPayer([2.5, 45, 0.75], [3, 1, 4]) donne 52.725.
Correction détaillée
La correction de ce devoir est réservée aux abonnés. Elle donne l'analyse, l'algorithme en notation tunisienne, le programme Python vérifié et les erreurs fréquentes de chaque exercice. Avec un compte gratuit, tu peux ouvrir 3 corrections de ton choix.
Connecte-toi d'abord : créer un compte ou me connecter.
Tu as encore 0 correction(s) gratuite(s) à utiliser.
Il te faut un abonnement actif pour les autres corrections. Voir les tarifs ou demander un code sur WhatsApp, Instagram ou Facebook.
Les corrections gratuites de cet appareil ont déjà été utilisées, avec ce compte ou un autre : chaque appareil a droit à 3 corrections gratuites, quel que soit le nombre de comptes. Pour les autres corrections, il faut un abonnement. Voir les tarifs ou écrire sur WhatsApp.
Mission Carthage est en période de test : le site s'ouvre avec un code d'accès. Demande ton code sur WhatsApp, Instagram ou TikTok, puis tape-le sur missioncarthage.tn.
Cette correction n'est pas encore publiée. Reviens bientôt.
Impossible de charger la correction. Vérifie ta connexion et réessaie.
Toutes les corrections jusqu'au devoir de synthèse3 mois pour 20 TND, offre jusqu'au 30 novembre 2026 Envoyer à un parent pour qu'il paieSujet original écrit pour Mission Carthage, dans le format d'un devoir pratique d'informatique (4ème Sciences de l'informatique, technologies du web). Ce n'est pas un sujet officiel.
Tout le programme : Bac Sciences de l'informatique · Revoir le cours · Tous les devoirs