ALGORITHMIQUE 1 Comprendre l'algorithmique 11 Qu'est-ce qu'un algorithme Soit la recette d'une omelette de 6 œufs a) prendre un "cul de poule" b) prendre six œufs frais c) les casser dans le "cul de poule" d) jeter les coquilles dans la poubelle e) battre les œufs f) saler, poivrer g) mettre un mélange beurre-huile à chauffer dans une poêle sur la cuisinière h) lorsque le mélange est chaud (couleur blonde), y verser le contenu du "cul de poule" i) (note du cuisinier : j'abrège) enlever la poêle de la cuisinière lorsque l'omelette est cuite. TAF : En examinant cette recette, pouvez-vous - trouver un but ? - décomposer la fabrication de l'omelette ? - trouver une suite dans ces actions ? ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 1 12 Caractériser une séquence 121 Observer Objectif : calculer le salaire brut mensuel d'un employé payé à l'heure : vous disposez des cas suivants pour votre étude Nom du salarié Mat Bob Busy Nombre d'heures 154 160 148,5 Taux horaire 8 10,2 9 Solution algorithmique Jeu d'essai Nom du salarié Mat Bob Busy Nombre d'heures 154 160 148,5 Taux horaire 8 10,2 9 Salaire brut 1 232 1 632 1 336,5 Lexique Nom symbolique NOM NBH TXH BRUT Désignation Type Nom du salarié Élémentaire Nombre d'heures travaillées dans le mois Élémentaire Taux horaire Élémentaire Montant du salaire brut mensuel Calculé Nature Remarques et Règles de calcul Chaîne (texte) Réel Réel Réel = NBH x TXH Algorithme : calcul du salaire mensuel d'un salarié Variables NOM : texte NBH, TXH, BRUT : Réel DEBUT SAISIR NOM, NBH, TXH CALCULER BRUT NBH x TXH AFFICHER NOM, BRUT FIN Trace NOM Mat Bob Busy NBH 154 160 148,5 TXH 8 10,2 9 BRUT 1 232 1 632 1 336,5 Affichage Mat 1 232 Bob 1 632 Busy 1 336,5 TAF : Repérer les différentes parties de la solution algorithmique. Pourquoi utilise-t-on des variables ? Repérer les éléments caractéristiques de l'algorithme proprement dit. Comment est représenté un calcul ? ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 2 122 Conclure 123 Faire On désire étudier le calcul du montant de la facture d'un abonné EDF. Tous les deux mois, il doit payer un abonnement fixe de 11 € et 12 centimes par KW/H consommé. On a en notre possession ses coordonnées et les relevés de compteur de début et fin de période. A titre indicatif, on vous fournit les éléments suivants : Numéro 1012 1028 1044 1056 1152 Nom Merlin Lench Anteur Mage Icien Ancien index 220 12 200 1 850 120 0 Nouvel index 1 440 12 330 1 880 458 32 TAF : Élaborer la solution algorithmique qui permettra de connaître le montant à payer par chaque abonné : - réalisation "à la main" des objectifs (jeu d'essai) - lexique - algorithme - trace 13 Caractériser une alternative 131 Observer Objectif : déterminer la répartition des heures réalisées par un salarié au cours d'une semaine : heures normales, heures supplémentaires à +25 %, heures supplémentaires à +50 %, Nom du salarié Nombre d'heures hebdomadaires Mat 40 Bob 49 Busy 39 Louis 45 Roland 38 Solution algorithmique jeu d'essai (à réaliser) ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 3 Lexique Nom Désignation Type symbolique NOM Nom du salarié Élémentaire NBH Nombre d'heures travaillées Élémentaire dans la semaine NBHN Nombre d'heures travaillées Calculé dans la semaine NBHS25 Nombre d'heures Calculé supplémentaires + 25 % NBHS50 Nombre d'heures supplémentaires + 50 % Nature Remarques et Règles de calcul Chaîne (texte) Réel Calculé Réel ........ Réel ........ Réel ........ Algorithme : calcul des heures travaillées hebdomadaires d'un salarié Variables NOM : texte NBH, NBHN, NBHS25, NBHS50 : Réel DEBUT SAISIR NOM, NBH SI NBH > 43 ALORS NBHS50 NBH - 43 NBHS25 4 NBHN 39 SINON SI NBH > 39 ALORS NBHS50 0 NBHS25 NBH-39 NBHN 39 SINON NBHS50 0 NBHS25 0 NBHN NBH FIN SI FIN SI AFFICHER NOM, NBHN, NBHS25, NBHS50 FIN TAF : Rappeler les règles de calcul des heures supplémentaires. Compléter le jeu d'essai. Qu'est-ce qu'une alternative ? Repérer ce qui caractérise une alternative dans l'algorithme ci-dessus. Expliquer le fonctionnement de cet algorithme. 132 Conclure ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 4 133 Faire On désire étudier le calcul du montant de la facture d'un abonné EDF. Tous les deux mois, il doit payer un abonnement fixe de 11 € et le coût de sa consommation selon la tarification suivante : - 12 centimes par KW/H consommé jusqu'à 100 KW/H, - 9 centimes par KW/H pour les 150 KW/H suivants, - 5 centimes par KW/H consommé au-delà de 250 KW/H. On a en notre possession ses coordonnées et les relevés de compteur de début et fin de période. Nota : vous utiliserez les mêmes exemples de calcul que pour l'algorithme du point 123. TAF : Élaborer la solution algorithmique qui permettra de connaître le montant à payer par chaque abonné. 14 Caractériser une itération (itération : action de répéter) 141 Observer Objectif : déterminer le salaire net de chaque salarié d'une entreprise à partir du salaire brut et des cotisations sociales part salarié, ainsi que le montant total des salaires bruts. La fin des calculs sera repérée quand il n'y aura plus de nom de salarié à saisir. Nom du salarié Mat Bob Busy Salaire brut 1 232 1 632 1 336,50 Cotisations part salarié 246,40 344,50 237,30 Solution algorithmique jeu d'essai (à réaliser) Lexique Nom symbolique NOM BRUT COTIS NET TOTBRUT Désignation Nom du salarié Montant du salaire brut mensuel Montant des cotisations sociales Montant du salaire net Total des salaires bruts versés Type Élémentaire Élémentaire Élémentaire Calculé Calculé Nature Chaîne (texte) Réel Réel Réel Réel Remarques et Règles de calcul = BRUT - COTIS ........ ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 5 Algorithme : calcul du salaire mensuel net d'un salarié et du total des salaires bruts versés par l'entreprise Variables Nom : texte BRUT, COTIS, NET, TOTBRUT : Réel DEBUT TOTBRUT 0 SAISIR NOM TANT QUE NOM <>"" FAIRE SAISIR BRUT, COTIS NET BRUT - COTIS TOTBRUT TOTBRUT + BRUT AFFICHER NOM, NET SAISIR NOM FIN TANT QUE AFFICHER TOTBRUT FIN TAF : Compléter le jeu d'essai. Qu'est-ce qu'une itération ? Repérer ce qui caractérise une itération dans l'algorithme ci-dessus. Expliquer le fonctionnement de cet algorithme à l'aide d'une trace. A l'aide de la trace et de l'algorithme, déterminer la règle de calcul de TOTBRUT. Compléter le lexique. 142 Conclure ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 6 143 Faire On désire étudier le calcul du montant de la facture d'un abonné EDF et obtenir également le montant total payé par les abonnés ainsi que le nombre moyen de KW/H consommés par un abonné. On a en notre possession ses coordonnées et les relevés de compteur de début et fin de période (deux mois). L'abonné doit payer un abonnement fixe de 11 € et le coût de sa consommation selon la tarification suivante : - 12 centimes par KW/H consommé jusqu'à 100 KW/H, - 9 centimes par KW/H pour les 150 KW/H suivants, - 5 centimes par KW/H consommé au-delà de 250 KW/H. Nota : vous utiliserez les mêmes exemples de calcul que pour l'algorithme du point 123. TAF : Élaborer la solution algorithmique qui permettra de connaître le montant à payer par chaque abonné, le montant total payé par tous les abonnés et le nombre moyen de KW/H consommé par un abonné. ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 7 144 Généraliser Tant Que Variante 1 du problème du point 143 On a dénombré 40 clients. On dispose de ce renseignement dès le début, et l'on souhaite en tenir compte dans l'algorithme. TAF : Cela modifie-t-il le lexique ? Compléter l'algorithme ci-après afin de tenir compte de ce nouvel élément. Algo EDF3a Variables Numcli, Nomcli : chaîne AI, NI, NBK, I, TK : entier PT1,PT2,PT3, ABO, MTF, MOYKW, TT DEBUT : Réel PT1 0,12 PT2 0,09 PT3 0,05 ABO 11 I0 TT 0 TK 0 NBK NI-AI SI NBK < 100 ALORS MTF (PT1 x NBK) + ABO SINON SI NBK <250 ALORS MTF ((PT1 x 100) + (PT2 x (NBK -100)) + ABO SINON MTF ((PT1x100)+(PT2x150)+PT3x(NBK-250)) + ABO FIN SI FIN SI AFFICHER "Le client ",Numcli," ", Nomcli " consomme ",NBK," et doit payer ",MTF," euros. " FIN TANT QUE MOYKW TK / I AFFICHER "La moyenne de KW/H consommé par un abonné est de ", MOYKW AFFICHER "Le montant total payé par les clients est de ", TT," euros" FIN ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 8 Variante 2 du problème du point 143 On a dénombré un nombre donné de clients. On dispose de ce renseignement dès le début, et l'on souhaite en tenir compte dans l'algorithme. TAF : Cela modifie-t-il le lexique ? Compléter l'algorithme ci-après afin de tenir compte de ce nouvel élément. algo EDF3b Variables Numcli, Nomcli : chaîne AI, NI, NBK, I, TK : entier PT1,PT2,PT3, ABO, MTF, MOYKW, TT DEBUT : Réel PT1 0,12 PT2 0,09 PT3 0,05 ABO 11 I0 TT 0 TK 0 NBK NI-AI SI NBK < 100 ALORS MTF (PT1 x NBK) + ABO SINON SI NBK <250 ALORS MTF ((PT1 x 100) + (PT2 x (NBK -100)) + ABO SINON MTF ((PT1x100)+(PT2x150)+PT3x(NBK-250)) + ABO FIN SI FIN SI AFFICHER "Le client ",Numcli," ", Nomcli " consomme ",NBK," et doit payer ",MTF , " euros." FIN TANT QUE MOYKW TK / I AFFICHER "La moyenne de KW/H consommé par un abonné est de ", MOYKW AFFICHER "Le montant total payé par les clients est de ", TT , " euros." FIN Synthèse sur le fonctionnement de Tant Que avec un nombre fini d'itérations ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 9 145 Les autres boucles Reprenons l'exemple du point 141. TAF : Considérant qu'il y a N salariés, compléter l'algorithme ci-après. Algorithme : calcul du salaire mensuel net d'un salarié et du total des salaires bruts versés par l'entreprise Variables Nom : texte BRUT, COTIS, NET, TOTBRUT : Réel DEBUT TOTBRUT 0 AFFICHER NOM, NET FIN TANT QUE AFFICHER TOTBRUT FIN TAF 2 : Examinez le comportement de l'algorithme ci-dessous qui exécute le processus. Trouvez les différences avec l'algorithme que vous venez de compléter et tirez-en des conclusions. Algorithme : calcul du salaire mensuel net d'un salarié et du total des salaires bruts versés par l'entreprise Variables Nom : texte BRUT, COTIS, NET, TOTBRUT : Réel I, N : Entier DEBUT TOTBRUT 0 I0 SAISIR N REPETER SAISIR NOM, BRUT, COTIS NET BRUT - COTIS TOTBRUT TOTBRUT + BRUT II+1 AFFICHER NOM, NET JUSQU'A I=N AFFICHER TOTBRUT FIN ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 10 TAF 3 : Examinez le comportement de l'algorithme ci-dessous qui exécute le processus. Trouvez les différences avec l'algorithme que vous venez de compléter et tirez-en des conclusions. Algorithme : calcul du salaire mensuel net d'un salarié et du total des salaires bruts versés par l'entreprise Variables Nom : texte BRUT, COTIS, NET, TOTBRUT : Réel I, N : Entier DEBUT TOTBRUT 0 SAISIR N POUR I de 1 à N PAS 1 SAISIR NOM, BRUT, COTIS NET BRUT - COTIS TOTBRUT TOTBRUT + BRUT AFFICHER NOM, NET FIN POUR AFFICHER TOTBRUT FIN Synthèse sur le fonctionnement des boucles ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 11 2 Les fonctions et les procédures 21 Les fonctions 211 Observer 2111 la démarche algorithmique Objectif : On désire automatiser le calcul des commissions dues aux représentants. Pour cela, on met à votre disposition : - un extrait d'un contrat de travail "Les représentants, rémunérés exclusivement au pourcentage, toucheront leur commission chaque mois. Elle sera fonction du chiffre d'affaires H.T. qu'ils auront réalisé au cours du mois. Si celui-ci dépasse 20 000 €, la commission de base sera de 10 % du chiffre d'affaires. Dans le cas contraire, elle sera de 7 %. Le salaire touché par le représentant sera la commission de base arrondie à la centaine d’euros inférieure. Pour compenser cet arrondi, les représentants se verront régulariser leur salaire en fin d'année et de plus bénéficieront d'une prime de 200 €." - le tableau des chiffres d'affaires du mois de mai Nom René Tim Bratt Hubert C.A. H.T. 17 750 € 30 041 € 44 025 € 19 520 € TAF : Élaborer la solution algorithmique qui permettra de connaître pour un mois le salaire dû à chaque représentant, le total des salaires versées et le salaire moyen : - réalisation "à la main" des objectifs (jeu d'essai) - lexique - algorithme - trace Nota : vous considérerez un nombre donné de représentants ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 12 L'informaticien de l'entreprise a utilisé votre algorithme et en est très satisfait. Il a cependant décidé de créer une fonction "arrondi à la centaine d’euros inférieure" car il pense que cela pourrait être utilisable pour d'autres algorithmes. Il vous soumet sa solution pour que vous l'étudiiez (il a sans doute une idée derrière la tête...). algo salaire fonction var nom : chaîne i,nb : entier CAHT, com, sal, totsal, moysal : réel DEBUT AFFICHER "Ce programme calcule le salaire total et moyen" i0 totsal 0 AFFICHER "donner nombre de salariés " SAISIR nb TANTQUE i<nb FAIRE AFFICHER "donner nom du salarié " SAISIR nom AFFICHER "donner C.A. HT " SAISIR CAHT SI CAHT > 2000 ALORS com CAHT * 0.1 SINON com CAHT * 0.07 FINSI sal ARRON(com) AFFICHER nom, sal totsal totsal+sal i i+1 FIN TANT QUE moysal totsal/i AFFICHER totsal,moysal FIN FONCTION ARRON(nomb) : entier var arr : entier DEBUT arr ENTIER(nomb/100)*100 RETOURNER arr FIN TAF : Répondre aux questions suivantes : - Quelle est la différence entre l’algorithme que vous avez établi et celui de l’informaticien ? - Qu'est-ce qui identifie la fonction ? - Où est placée la fonction par rapport à l'algorithme principal ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 13 - Que fait la fonction ? - Quels sont les éléments variables utilisés par la fonction ? - Comment est utilisée la fonction dans l'algorithme principal ? - Comment se fait le passage de variable : * l'algorithme principal --> la fonction : * la fonction --> l'algorithme principal : 2112 le fonctionnement des programmes ALG'EXEC TAF : Ouvrir le programme SALFONC.ALG et observer comment Alg'exec traite les problèmes des fonctions. ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 14 212 Faire 2121 la démarche algorithmique Quel est l'intérêt du passage de variable ? voyons ce que demande l'informaticien. Justement, notre informaticien vous soumet un problème qui le préoccupe : il gère les commandes de pièces détachées réalisées par les clients : il faut que le nombre de pièces stockées soit pratiquement équivalent au volume commandé. Exemple : pour 625 pièces commandées, il faut avoir 600 pièces stockées ; pour 252 pièces commandées, il faut avoir 200 pièces stockées ; pour 1158 pièces commandées, il faut avoir 1100 pièces stockées ; etc... Il se demande s'il ne pourrait pas utiliser la fonction ARRON ! Il vous fournit l'algorithme actuel, et vous demande d'intégrer la fonction ARRON pour calculer un nombre de pièces tk à stocker. algo pièce var Rep, Ref i,nb, p, tp : chaîne : entier DEBUT AFFICHER "Ce programme calcule le nombre de pièces à stocker" Rep "O" TANT QUE Rep ="O" FAIRE tp 0 AFFICHER "donner la référence de la pièce " SAISIR Ref AFFICHER "donner nombre de commandes " SAISIR nb POUR I DE 1 A nb AFFICHER "donner le nombre de pièces de la commande ",I," " SAISIR p tp tp + p FIN POUR SAISIR "Autre traitement (O/N) ",Rep FIN TANT QUE FIN TAF : Répondre aux questions suivantes : - Que fait l'algorithme pièce ? - Que manque-t-il dans l’algorithme ? - intégrez la fonction ARRON pour l'algorithme affiche pour chaque pièce la quantité tk, arrondie, à la centaine inférieure de tp. - refaites le passage de variable comme pour l'algorithme salaire - trouvez-vous des similitudes avec l'algorithme salaire précédent ? 2122 le fonctionnement des programmes ALG'EXEC TAF : Ouvrir le programme PIECE1.ALG et le modifier afin d'intégrer la fonction ARRON. ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 15 213 Conclure 214 Exploiter Exercice On vous demande de réaliser l’algorithme qui permettra d’obtenir à partir d’un capital placé le capital acquis. On prendra un taux annuel. La durée de placement sera donnée en mois. Le principe de l’intérêt simple sera appliqué. Dans un premier temps, votre solution sera réalisée en un seul algorithme. Dans un second temps, vous utiliserez une fonction AUGM qui à partir du capital de départ calculera directement la valeur acquise. 22 Les procédures 221 Observer Objectif : On désire améliorer le traitement des consommations d'électricité (voir point 143 - énoncé des cas point 123) car on a détecté des erreurs de saisie dans les nouveaux index. Pour cela, un nouvel algorithme a été élaboré. ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 16 algo EDF5971 var nom : chaîne AI, NI, I, NB : entier MM, MTF, PT1, PT2, PT3, ABO, NBK : Réel DEBUT ABO 11 PT1 0.12 PT2 0.09 PT3 0.05 MM 0 SAISIR "Donner le nombre de clients concernés " ,NB POUR I DE 1 A NB AFFICHER "Donner le nom du client " SAISIR NOM AFFICHER "Donner l'ancien index compteur " SAISIR AI AFFICHER "Donner le nouvel index compteur " SAISIR NI SI NI<AI ALORS TANT QUE NI < AI FAIRE AFFICHER "ERREUR DE SAISIE : nouvel index inférieur à l'ancien ! RECOMMENCER " AFFICHER "Donner le nouvel index compteur " SAISIR NI FIN TANT QUE FINSI NBK NI-AI SI NBK < 100 ALORS MTF 0.8*NBK SINON SI NBK <250 ALORS MTF (PT1 * 100) + (PT2 * (NBK -100)) SINON MTF (PT1*100)+(PT2*150)+PT3*(NBK-250) FINSI FINSI MTF MTF+ABO MM MM + MTF AFFICHER "Le client ",NOM," consomme ",NBK, " et doit payer ",MTF, " euros." FIN POUR AFFICHER "Le montant total payé par les clients est ",MM FIN TAF : - Expliquer la méthode utilisée pour éviter les erreurs de saisie du nouvel index à l'aide d'un exemple illustré. - Tester avec EDF5971.ALG ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 17 L'informaticien de l'entreprise voudrait structurer le programme réalisé en détachant la saisie des index et la vérification du nouvel index. Il vous soumet sa solution pour que vous l'étudiez. algo EDF597pr var nom : chaîne AI, NI, I, NB : entier MM, MTF, PT1, PT2, PT3, ABO, NBK : Réel DEBUT ABO 11 PT1 0.12 PT2 0.09 PT3 0.05 MM 0 SAISIR "Donner le nombre de clients concernés " ,NB POUR I DE 1 A NB AFFICHER "Donner le nom du client " SAISIR NOM INDEX(AI,NI) NBK NI-AI SI NBK < 100 ALORS MTF PT1*NBK SINON SI NBK <250 ALORS MTF (PT1 * 100) + (PT2 * (NBK -100)) SINON MTF (PT1*100)+(PT2*150)+PT3*(NBK-250) FINSI FINSI MTF MTF+ABO MM MM + MTF AFFICHER "Le client ",NOM," consomme ",NBK, " et doit payer ",MTF, " euros." FIN POUR AFFICHER "Le montant total payé par les clients est ",MM FIN ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 18 PROCEDURE INDEX( s V1 : entier ; s V2 : entier) DEBUT AFFICHER "Donner l'ancien index compteur " SAISIR V1 AFFICHER "Donner le nouvel index compteur " SAISIR V2 SI V2<V1 ALORS TANT QUE V2 < V1 FAIRE AFFICHER "ERREUR DE SAISIE : nouvel index inférieur à"& AFFICHER " l'ancien ! RECOMMENCER" AFFICHER "Donner le nouvel index compteur " SAISIR V2 FIN TANT QUE FINSI FIN TAF : Répondre aux questions qui suivent. - Qu'est-ce qui identifie la procédure ? - Où est placée la procédure par rapport à l'algorithme principal ? - Que fait la procédure ? - Quels sont les éléments variables utilisés par la procédure ? - Comment est utilisée la procédure dans l'algorithme principal ? - Comment se fait le passage de : * l'algorithme principal --> la procédure : * la procédure --> l'algorithme principal : - Exécuter le programme EDF597PR.ALG en exécution Pas à Pas pour vérifier comment fonctionne la procédure INDEX - Exécuter le programme EDF597P2.ALG en exécution Pas à Pas (vous pouvez accélérer....) et expliquer le fonctionnement de la procédure TRAIT (visualisez le passage de variables). ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 19 222 Faire Une compagnie d'assurance assure ses véhicules de la façon suivante : Jusqu'à 4 CV De 5 et 6 CV De 7 à 9 CV A partir de 10 CV 800 € par an 1 000 € par an 1 300 € par an 1 700 € par an De plus, elle a divisé le territoire national en différentes régions qu'elle appelle Groupes, et applique certaines majorations en fonction du Groupe auquel appartient le véhicule à assurer : Groupe 1 : majoration de 10 % Groupe 2 : majoration de 20 % Groupe 3 : majoration de 15 % Groupe 4 : majoration de 5 % Groupes 5, 6 , 7 : pas de majoration TAF 1 : Elaborer la solution algorithmique qui permettra de connaître pour un véhicule donné sa prime d’assurance : - réalisation "à la main" des objectifs (vous devez élaborer un jeu d'essai) - lexique - algorithme - trace Nota : vous considérerez un nombre donné de véhicules TAF 2 : Modifier l’algorithmique de manière à utiliser une procédure pour la détermination de la prime selon les groupes. TAF 3 : Modifier l’algorithmique de manière à utiliser de plus une procédure pour la détermination du tarif selon la puissance du véhicule. 223 Conclure 224 Exploiter ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 20 3 La gestion des données 31 Les données internes (tableaux de variables) 311 Observer Objectif : On désire améliorer le traitement des consommations d'électricité (voir point 143 - énoncé des cas point 123) car l’employé qui utilise le programme tiré de l’algorithme trouve que le temps d’immobilisation devant le poste informatique est trop long. Il serait bien plus intéressant de saisir d’abord tous les éléments relatifs aux clients, puis de laisser l’ordinateur calculer les montants et afficher (imprimer) les résultats obtenus : ainsi, pendant ce temps, il pourrait aller boire un café ! Pour cela, un nouvel algorithme a été élaboré. algo EDF6 tableaux var Numcli[20], Nomcli[20] : tableau chaîne AI[20], NI[20], NBK[20] : tableau entier I, N : entier PT1, PT2, PT3, ABO, TK, MOYKW, TT : Réel MTF[20] : tableau réel DEBUT AFFICHER "Donner le prix de l'abonnement " SAISIR ABO AFFICHER "Donner le prix de la tranche 1 " SAISIR PT1 AFFICHER "Donner le prix de la tranche 2 " SAISIR PT2 AFFICHER "Donner le prix de la tranche 3 " SAISIR PT3 I0 TT 0 TK 0 SAISIR "DONNER LE NOMBRE DE CLIENTS (20 maximum) ", N ‘ ************************************************************* Saisie ' ************************************************************* TANT QUE I<N FAIRE I I +1 AFFICHER "Donner le numéro du client " SAISIR NUMCLI[I] AFFICHER "Donner le nom du client " SAISIR NOMCLI[I] AFFICHER "Donner l'ancien index compteur " SAISIR AI[I] AFFICHER "Donner le nouvel index compteur " SAISIR NI[I] FIN TANT QUE ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 21 ' ************************************************************* ' Calcul du montant dû par chaque client + cumul ' ************************************************************* POUR I DE 1 A N NBK[I] NI[I]-AI[I] SI NBK[I] < 100 ALORS MTF[I] PT1*NBK[I] SINON SI NBK[I] <250 ALORS MTF[I] (PT1 * 100) + PT2 * (NBK[I] -100) SINON MTF[I] (PT1*100)+(PT2*150)+PT3*(NBK[I]-250) FINSI FINSI MTF[I] MTF[I]+ABO TK TK + NBK[I] TT TT + MTF[I] FIN POUR FIN TAF : - Donner la structure globale de l’algorithme. - Expliquer à l’aide d’une trace le fonctionnement de la boucle de saisie : vous visualiserez vos variables sous forme de "cases mémoires" comme en page suivante. - Pourquoi avoir mis 20 comme dimension des variables de tableau ? Que faire si l'on prévoit 100 clients ? - Compléter l'algorithme avec les affichages. - Vérifier votre travail en utilisant le programme EDF697E.ALG que vous aurez soin de compléter. Nota : avec ALG'EXEC, les indices se mettent entre crochets (Alt Gr ( pour [ Alt Gr ) pour ] ). ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 22 I N PT1 TK TT MOYKW Numcli (20) Numcli (1) Numcli (2) Numcli (3) Numcli (4) Numcli (5) Numcli (6) Numcli (7) Numcli (8) ........ Numcli (20) ........ Nomcli(20) Nomcli (1) Nomcli (2) Nomcli (3) Nomcli (4) Nomcli (5) Nomcli (6) Nomcli (7) Nomcli (8) ........ Nomcli (20) NI(20) NI (1) NI (2) NI (3) NI (4) NI (5) NI (6) NI (7) NI (8) ........ NI (20) ........ PT2 ........ ........ ABO AI(20) AI (1) AI (2) AI (3) AI (4) AI (5) AI (6) AI (7) AI (8) ........ AI (20) NBK(20) NBK (1) NBK (2) NBK (3) NBK (4) NBK (5) NBK (6) NBK (7) NBK (8) ........ NBK (20) PT3 ........ MTF(20 MTF (1) MTF (2) MTF (3) MTF (4) MTF (5) MTF (6) MTF (7) MTF (8) ........ MTF (20) ........ 312 Faire TAF : Reprendre l'algorithme de l'exercice 5 et réaliser un traitement par lots des différents travaux en envisageant des lots de 25 sinistres maximum. - Donner la structure globale de l’algorithme. 313 Observer Votre ami informaticien vous soumet le programme EDF6972 qu'il a réalisé et qu'il considère comme utilisant le même concept et offrant les mêmes avantages que le programme EDF697 : il peut aller boire son café tranquille. algo EDF6 version 2 tableaux var Numcli[20], Nomcli[20] : tableau chaîne IND[20,2], NBK[20] : tableau entier I, N : entier PT1, PT2, PT3, ABO, TK, MOYKW, TT : Réel MTF[20] : tableau réel ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 23 DEBUT AFFICHER "Donner le prix de l'abonnement " SAISIR ABO AFFICHER "Donner le prix de la tranche 1 " SAISIR PT1 AFFICHER "Donner le prix de la tranche 2 " SAISIR PT2 AFFICHER "Donner le prix de la tranche 3 " SAISIR PT3 I0 TT 0 TK 0 SAISIR "DONNER LE NOMBRE DE CLIENTS (20 maximum) ", N ‘ ************************************************************* Saisie ' ************************************************************* TANT QUE I<N FAIRE I I +1 AFFICHER "Donner le numéro du client " SAISIR NUMCLI[I] AFFICHER "Donner le nom du client " SAISIR NOMCLI[I] AFFICHER "Donner l'ancien index compteur " SAISIR IND[I,1] AFFICHER "Donner le nouvel index compteur " SAISIR IND[I,2] FIN TANT QUE ' ************************************************************* ' Calcul du montant dû par chaque client + cumul ' ************************************************************* POUR I DE 1 A N NBK[I] IND[I,2] - IND[I,1] SI NBK[I] < 100 ALORS MTF[I] PT1*NBK[I] SINON SI NBK[I] <250 ALORS MTF[I] (PT1 * 100) + PT2 * (NBK[I] -100) SINON MTF[I] (PT1*100)+(PT2*150)+PT3*(NBK[I]-250) FINSI FINSI MTF[I] MTF[I]+ABO TK TK + NBK[I] TT TT + MTF[I] FIN POUR ‘ ************************************************************* ' Affichage des éléments relatifs à chaque client ' ************************************************************* POUR I DE 1 A N AFFICHER "Le client ",NOMCLI[I]," consomme ",NBK[I], " et doit payer ",MTF[I] FIN POUR ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 24 ‘ ************************************************************* ' Affichage des éléments de synthèse ' ************************************************************* MOYKW TK / I AFFICHER "La moyenne des KW/H consommée est de ", MOYKW AFFICHER "Le montant total payé par les clients est de ", TT," €" FIN TAF : Noter les modifications entre cet algorithme et celui du point 311. Visualiser ces changements en réalisant une trace de l'algorithme (voir énoncé point 123) dans un cadre similaire à celui de la page 23. - Ouvrir le programme EDF6972 et ajouter une section permettra d'afficher le contenu de la nouvelle variable. 314 Faire Votre ami informaticien pense qu'on pourrait également utiliser la même variable pour stocker la consommation. TAF : Réaliser ce programme à partir du programme que vous venez de réaliser. 315 Conclure ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 25 316 Exploiter Le gérant d'un bowling assure la facturation des parties jouées à l'aide de l'algorithme ci-dessous. algo BOWLING VAR nom, continue : chaîne abonne, nbpart : entier T[3] : tableau entier total : Réel DEBUT T[1] 6 T[2] 10 T[3] 14 continue "O" TANTQUE MAJ(continue) = "O" AFFICHER "Donner votre nom " SAISIR nom AFFICHER "Taper 1 si abonné, 0 si non abonné" SAISIR abonne AFFICHER "Donner le nombre de parties jouées " SAISIR nbpart Total T[nbpart] SI abonne = 1 ALORS total total - (total*0.1) FINSI AFFICHER nom," qui a fait ",nbpart," parties doit payer ",total, " euros." SAISIR "autre joueur ? (O/N)",continue FINTANT QUE FIN TAF : - Expliquer les règles de gestion de la facturation utilisée par le Bowling. - Plusieurs personnes ont voulu jouer 4 et 5 parties. Le gérant a donc complété son tarif : 4 parties --> 17 € ; 5 parties --> 20 €. Modifiez l'algorithme en conséquence. - Le gérant voudrait maintenant créer deux sortes d'abonnés : le normal qui aurait droit à une réduction de 10 %, le super qui aurait droit à 20 % de réduction. Modifiez l'algorithme en conséquence. ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 26 32 Les données externes (fichiers) 321 Observer Objectif : On désire toujours améliorer le traitement des consommations d'électricité (voir point 143 - énoncé du cas point 123). L'autre jour, la cafetière a créé un court circuit en plein traitement : il a fallu tout ressaisir ! Il serait bien plus intéressant de stocker les informations relatives aux clients afin d'éviter ce genre de problème ! Dans le but de boire son café enfin tranquille tout en ayant le loisir de faire disjoncter l'ordinateur si cela est nécessaire, un nouvel ensemble d'algorithmes a été élaboré. algo EDFCLED création clients et vérification - accès direct FICHIER FCLIENT en organisation indexée accès direct clef = Numclt ENREGISTREMENT CLIENT Numclt : chaîne(4) Nomclt : chaîne(20) Ait, Nit : entier FIN ENREGISTREMENT VAR Rep : chaîne(1) I, N : entier DEBUT I0 SAISIR "DONNER LE NOMBRE DE CLIENTS (20 maximum) ", N ' ************************************************************* ' Écriture ' ************************************************************* OUVRIR FCLIENT EN LECTURE/ECRITURE TANT QUE I<N FAIRE I I +1 AFFICHER "Donner le numéro du client "&;SAISIR Numclt LIRE client avec clef = Numclt SI TROUVE(CLIENT) ALORS AFFICHER "Le nom du client est ", Nomclt, "existe déjà " AFFICHER "Vous allez devoir saisir à nouveau les index" AFFICHER "Donner l'ancien index "&;SAISIR Ait AFFICHER "Donner le nouvel index "&;SAISIR Nit REECRIRE CLIENT SINON AFFICHER "Donner le nom du client "&;SAISIR Nomclt AFFICHER "Donner l'ancien index "&;SAISIR Ait AFFICHER "Donner le nouvel index "&;SAISIR Nit ECRIRE CLIENT FINSI FIN TANT QUE FERMER FCLIENT ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 27 ' ************************************************************* ' Lecture ' ************************************************************* OUVRIR FCLIENT en LECTURE Rep "O" TANT QUE Rep = "O" FAIRE LIRE CLIENT SUIVANT SI TROUVE(CLIENT) ALORS AFFICHER "Le numéro du client ",Numclt AFFICHER "Le nom du client est ", Nomclt AFFICHER "L'ancien index est ", Ait AFFICHER "Le nouvel index est ", Nit SINON Rep "N" FINSI FIN TANT QUE FERMER FCLIENT FIN Nota : Le fichier (ou table) FCLIENT est stocké sur disque dur. TAF : - Comment est décrit un fichier ? Appuyez-vous sur l'exemple donné dans l'algorithme. - Décrire les opérations permettant l’écriture : vous mettrez l'accent sur les opérations réalisées avec FCLIENT. ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 28 - Présenter la trace du traitement de saisie (avec le contenu du fichier FCLIENT donc) sachant que : * au départ, FCLIENT est le suivant : Numéro 1012 Nom Merlin Ancien index 0 Nouvel index 22 Ancien index 22 10 800 1 150 Nouvel index 220 12 200 1 850 * la secrétaire a les clients suivants à saisir : Numéro 1012 1028 1044 Nom Merlin Lench Anteur Saisie I N Numclt Numclt Nomclt FCLIENT Nomclt Ait Ait Nit Nit - En vous appuyant sur les enregistrements de FCLIENT que vous venez de définir, décrire les opérations permettant la lecture : vous mettrez l'accent sur les opérations réalisées avec FCLIENT. Nota : comme lorsque vous ouvrez une table sous ACCESS, le "pointeur" est sur le premier enregistrement lorsque l'on ouvre un fichier. ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 29 Objectif : Vous avez parfaitement compris le principe de fonctionnement des fichiers externes : l'informaticien vous laisse maintenant carte blanche pour finir le programme EDF897E.ALG qui intègre les fichiers externes pour gérer la facturation de la consommation d'électricité aux clients. TAF : - Expliquer le fonctionnement du programme EDF897E.ALG. Vous intégrerez des commentaires dans le programme permettant de séparer les différentes parties. Quel avantage par rapport au programme EDF697.ALG par exemple ? - Expliquer les différences entre les programmes EDF897E.ALG et EDF997.ALG. 322 Faire TAF : reprenez le programme réalisé au point 222 (calcul de prime d'assurance de véhicule) pour utiliser un fichier FVEHI qui stockera les éléments du véhicule, y compris la prime à payer. Créer parallèlement un programme qui permette de modifier, créer, lire les véhicules du fichier FVEHI (pour par exemple qu'un véhicule change de groupe, ou que l'on corrige une erreur de saisie du nombre de chevaux fiscaux). Il est conseillé de réfléchir à la manière la plus conviviale de procéder (un opérateur peut ne vouloir que lire, et pas forcément créer un véhicule en cas d'erreur de saisie ; il peut aussi vouloir changer le groupe, ou le nombre de chevaux, ou les deux). 323 Conclure 324 Exploiter TAF : reprenez le programme réalisé au point 316 (Bowling) pour utiliser un fichier FABO qui dans une partie gérera les joueurs (création et modification, lecture), puis dans une seconde partie gérera les parties jouées et le montant à payer. Nota : parties jouées et montant à payer peuvent être intégrés au fichier FABO. ______________________________________________________________________________________________ Louis Déroche - Lycée Albert Thomas - Roanne - Terminale STT IG - Algorithmique : support de cours page 30