1 Exercice n° 47 Description Public(s) Savoir(s) STT Informatique et gestion 1.2 Les domaines d’application 1.2.1 La gestion commerciale 2.3 La conception d’un programme 2.3.2 Les structures de programme Être capable de : - Faire la trace d’un algorithme existant et comprendre son objectif - Analyser un algorithme appliqué à la gestion des approvisionnements - Modifier un algorithme existant - Appliquer une méthode d’approvisionnement (quantités fixes-dates variables ou quantités variables-dates fixes) à la gestion d’un stock - Trace d’un algorithme - Analyse de l’algorithme appliqué à la gestion d’approvisionnement - Modification de l’algorithme : utilisation d’un compteur, d’un total et d’un tableau avec une structure Pour. Exonet47.zip Séverine QUESQUE Capacité(s) Activité(s) Fichier Auteur(s) Énoncé Contexte de travail L’entreprise DORSBIEN fabrique des landaus pour enfants. Elle achète les coques à un sous-traitant et aménage l’intérieur du landau grâce à des tissus gais et colorés. Le développeur d’application a quitté l’entreprise sans documenter ses programmes ! On vous demande donc d’analyser un de ses algorithmes afin de l’expliquer. Cet algorithme est fourni en annexe 1. Travail à réaliser 1 – Faites la trace de l’algorithme en utilisant les documents fournis en annexe 2. Remarque : Deux types d’annexe 2 sont proposés pour suivre l’évolution du contenu des variables (cf correction). 2 – L’affichage des résultats de l’algorithme représente à l’écran un document utilisé par l’entreprise. Précisez comment on appelle ce document. 3 – Indiquez ce que représentent les variables STS, QTECOM, STF, STI, QTELIV, DISPO et STA . Utilisez vos réponses pour donner un intitulé à chaque ligne du tableau obtenu à l’écran. 4 – Déterminez quelle méthode d’approvisionnement a été adoptée par l’entreprise. Justifiez votre réponse en précisant dans quelle instruction vous avez trouvé la solution. 5 – Déterminez le délai de livraison. Justifiez votre réponse. 6 – Modifiez l’algorithme afin que : - l’utilisateur puisse saisir le contenu du tableau CONSOM et les valeurs initiales de QTECOM et STF ; - l’algorithme intègre le calcul du nombre de commandes passées ainsi que la quantité totale commandée au cours des 6 mois. 2 Annexe 1 : ALGORITHME ACTION … Déclarations Constantes MOIS : tableau (1..6) de chaînes = {"Janvier", "Février", "Mars", "Avril", "Mai", "Juin"} CONSOM : tableau (1..7) d’entiers = {330, 170, 520, 110, 280, 350, 460} Variables STS, QTECOM, STF, I, STI, QTELIV, DISPO, STA : entiers /* CONSEIL : L’affichage se fait en colonne. On change de colonne à chaque valeur de la variable I */ DÉBUT STS 200 QTECOM 0 STF 640 POUR I DE 1 À 6 FAIRE AFFICHER MOIS[I] STI STF AFFICHER STI SI QTECOM = 1000 ALORS QTELIV 1000 QTECOM 0 SINON QTELIV 0 FINSI AFFICHER QTELIV DISPO STI + QTELIV STA STS + CONSOM[I] + CONSOM[I+1] SI DISPO <= STA ALORS QTECOM 1000 FINSI AFFICHER QTECOM AFFICHER CONSOM[I] STF DISPO - CONSOM[I] AFFICHER STF FINPOUR FIN 3 Annexe 2 : TRACE DE L’ALGORITHME Suivi des valeurs mémorisées Adresses Valeurs correspondantes MOIS[1] "Janvier" … … MOIS[6] "Juin" CONSOM[1] 330 … … CONSOM[7] 460 STS QTECOM STF I MOIS[I] STI QTELIV DISPO CONSOM[I] CONSOM[I+1] STA RÉSULTATS OBTENUS À L’ÉCRAN 4 Annexe 2 : TRACE DE L’ALGORITHME Suivi des valeurs mémorisées MOIS(1) MOIS(2) MOIS(3) MOIS(4) MOIS(5) MOIS(6) STF MOIS(6) Janvier Février Mars Avril Mai Juin I CONSOM(1) CONSOM(2) CONSOM(3) CONSOM(4) CONSOM(5) CONSOM(6) CONSOM(7) STI CONSOM(7) 330 170 520 110 280 350 460 QTELIV STS DISPO RÉSULTATS OBTENUS À L’ÉCRAN QTECOM STA 5 Correction Question 1 : TRACE DE L’ALGORITHME (1e version) Suivi des valeurs mémorisées Adresses Valeurs correspondantes MOIS[1] "Janvier" … … MOIS[6] "Juin" CONSOM[1] 330 … … CONSOM[7] 460 STS 200 QTECOM 0 ; 1000 ; 0 ; 1000 ; 0 STF 640 ; 310 ; 310 ; 1140 ; 620 ; 510 ; 230 ; 880 I 1;2;3;4;5;6;7 MOIS[I] "Janvier" ; "Février" ; "Mars" ; "Avril" ; "Mai" ; "Juin" STI 640 ; 310 ; 1140 ; 620 ; 510 ; 230 QTELIV 0 ; 1000 ; 0 ; 0 ; 0 ; 1000 DISPO 640 ; 1310 ; 1140 ; 620 ; 510 ; 1230 CONSOM[I] 330 ; 170 ; 520 ; 110 ; 280 ; 350 CONSOM[I+1] 170 ; 520 ; 110 ; 280 ; 350 ; 460 STA 700 ; 890 ; 830 ; 590 ; 830 ; 1040 Remarque pour le professeur : Pour les constantes, on ne note que l’affectation initiale (elle était mentionnée dans l’annexe fournie). Pour les variables, on note les résultats de tous les accès destructeurs (affectation) : la nouvelle valeur succède à l’ancienne valeur, les deux valeurs sont séparées par un point-virgule, l’ancienne valeur est biffée1. Pour les accès non destructeurs, on note la valeur accédée lorsqu’elle est différente de la dernière valeur notée. Cette convention s’applique à tous les accès destructeurs, même si la nouvelle valeur est égale à l’ancienne (voir l’évolution de la variable QTELIV). 1 6 Question 1 : TRACE DE L’ALGORITHME (2e version) Suivi des valeurs mémorisées MOIS(1) MOIS(2) MOIS(3) MOIS(4) MOIS(5) MOIS(6) STF 640 310 1140 620 510 230 880 MOIS(6) Janvier Février Mars Avril Mai Juin CONSOM(1) CONSOM(2) CONSOM(3) CONSOM(4) CONSOM(5) CONSOM(6) CONSOM(7) I 1 2 3 4 5 6 7 CONSOM(7) 330 170 520 110 280 350 460 STI 640 310 1140 620 510 230 STS 200 QTELIV 0 1000 0 0 0 1000 QTECOM 0 1000 0 1000 0 DISPO 640 1310 1140 620 510 1230 STA 700 890 830 590 830 1040 Question 1 : RÉSULTATS OBTENUS À L’ÉCRAN Janvier Février Mars Avril Mai Juin 640 310 1140 620 510 230 0 1000 0 0 0 1000 1000 0 0 0 1000 0 330 170 520 110 280 350 310 1140 620 510 230 880 Question 2 : Nom du tableau obtenu à l’écran On obtient un planning d’approvisionnement. 7 Question 3 : Que désignent STS, QTECOM, STF, STI, QTELIV, DISPO et STA ? STS : stock de sécurité utilisé par l’entreprise pour faire face à l’imprévu QTECOM : quantité en commande STF : stock final (en fin de mois) STI : stock initial (en début de mois) QTELIV : quantité livrée (en début de mois) DISPO : disponibilités pour satisfaire les consommations du mois (= stock initial + quantité livrée) STA : stock d’alerte, c’est-à-dire niveau de stock qui déclenche une commande Intitulés des lignes Mois Janvier Février Mars Avril Mai Juin Stock initial du mois 640 310 1140 620 510 230 Quantité livrée en début de mois 0 1000 0 0 0 1000 Quantité commandée en début de mois 1000 0 0 0 1000 0 Consommation au cours du mois 330 170 520 110 280 350 Stock final du mois 310 1140 620 510 230 880 Question 4 : Méthode d’approvisionnement L’entreprise prévoit de s’approvisionner à des dates variables mais en quantité fixe : si les disponibilités (stock initial + livraison) sont inférieures ou égales au stock d’alerte, une commande de 1 000 produits est passée. Le stock d’alerte est obtenu en additionnant le stock de sécurité, la consommation du mois en cours et celle du mois suivant. C’est la structure “ Si ” suivante qui fournit la réponse : SI DISPO <= STA ALORS QTECOM 1000 FINSI 8 Question 5 : Délai de livraison Le délai de livraison est de 1 mois puisqu’on teste dans l’algorithme la quantité commandée du mois précédent : si elle est égale à 1 000 alors cela indique qu’il y a une livraison pour le mois en cours (premier test SI). Question 6 : Modification de l’algorithme Nombre de commandes et quantité totale commandée Il faut deux variables supplémentaires : - une pour le nombre de commandes : NBCOMMANDE - une pour la quantité totale : QTETOTALE Le nombre de commandes est obtenu par incrémentation. Il faut donc l’initialiser à zéro en début de programme. La quantité totale peut être obtenue par deux moyens différents : - Soit on exploite le caractère fixe de la quantité commandée (quantité totale = 1 000 * nombre de commandes) : dans ce cas, le calcul se fait en fin de programme. C’est la solution choisie dans l’algorithme présenté ci-dessous. - Soit on obtient la quantité totale par cumul des quantités commandées : dans ce cas, la variable doit être initialisée en début de programme. Une commande est passée quand QTECOM passe à 1000 : on incrémente alors de 1 le nombre de commandes passées. Les modifications faites pour gérer ces deux variables sont présentées en rouge. Saisie de STF, QTECOM et des consommations Avant d’afficher le planning d’approvisionnement, il faut saisir les consommations mensuelles et les stocker dans le tableau CONSOM. Il s’agit de répéter 7 fois la saisie d’une case du tableau : cette saisie peut donc se faire grâce à une boucle Pour. La variable utilisée en tant que compteur peut être I ou une autre variable. Les modifications faites pour gérer ces saisies sont présentées en bleu. 9 ACTION PLANNING D’APPROVISIONNEMENT Déclarations Constantes MOIS : tableau (1..6) de chaînes = {"Janvier", "Février", "Mars", "Avril", "Mai", "Juin"} Variables CONSOM : tableau (1..7) d’entiers STS, QTECOM, STF, I, STI, QTELIV, DISPO, STA, NBCOMMANDE, QTETOTALE : entiers Début STS 200 Afficher "Entrer la quantité en cours de commande : " Saisir QTECOM Afficher "Entrer le stock final de la période précédente : " Saisir STF Pour I de 1 à 7 faire Afficher "Entrer la consommation prévue pour le mois de ", MOIS[I], " : " Saisir CONSOM[I] Finpour NBCOMMANDE 0 POUR I de 1 à 6 Faire afficher MOIS[I] STI STF afficher STI Si QTECOM = 1000 Alors QTELIV 1000 QTECOM 0 Sinon QTELIV 0 FinSi afficher QTELIV DISPO STI + QTELIV STA STS + CONSOM[I] + CONSOM[I+1] Si DISPO < STA Alors QTECOM 1000 NBCOMMANDE NBCOMMANDE + 1 FinSi Afficher QTECOM afficher CONSOM[I] STF DISPO - CONSOM[I] afficher STF FinPour Afficher "Le nombre de commandes passées est de : ", NBCOMMANDE QTETOTALE 1000 * NBCOMMANDE Afficher "La quantité totale commandée pour les 6 mois est de : ", QTETOTALE Fin Remarque pour le professeur : C’est par souci de simplification que la quantité fixe à commander (1 000) et le stock de sécurité (STS) n’ont pas fait l’objet d’un paramétrage de constantes.