ALGORITHMES - EXERCICES Exercice I : L’entreprise emploie des commerciaux qui vont à la rencontre des clients pour connaître leurs besoins. En fin de mois, elle rembourse les frais de déplacements des 10 commerciaux d’après le tarif suivant calculés par tranche et dégressif : Nombre de kilomètres parcourus De 0 à 1 000 Entre 1 001 et 2 500 Entre 2 501 et 5 000 Au delà de 5 000 Indemnité kilométrique 2,00 F 1,50 F 1,20 F 1,00 F Travail à faire : 1) Construire l’algorithme permettant de calculer le montant d’indemnités à rembourser à chaque représentant, ainsi que le montant total d’indemnités kilométriques versé à l’ensemble des représentants pour un mois donné. 2) L’entreprise devra t’elle payer des charges sociales sur ces indemnités kilométriques ? Exercice 2 : TRAMBOUZE SA fabrique des outils et consommables destinés aux métiers du bâtiment. Elle vend ses articles à trois catégories de clients : les grossistes, les détaillants et les particuliers. Le comptable a commencé à construire un algorithme destiné à calculer le montant net des commandes. Il vous fournit en Annexe 1 son projet accompagné des règles de gestion. Pour éventuellement vous aider dans votre réflexion, il vous fournit un extrait des commandes en cours. Numéro Catégorie Brut 1024 G 20 000,50 1025 D 18 420,10 1026 D 9 100,50 1027 P 1 850,00 1028 P 2 040,00 1029 D 12 000,00 1030 G 88 000,00 1031 P 2 000,00 Travail à faire 1 1. Complétez l’algorithme de l’Annexe 1 pour qu’il permette d’obtenir le montant net d’une commande. Le directeur aurait voulu avoir des statistiques, par exemple le nombre de détaillants ayant bénéficié d’une remise. Travail à faire 2 1 ALGORITHMES - EXERCICES 2. Rappeler les caractéristiques des différentes formes de structures itératives que l’on peut mettre en œuvre dans un algorithme. 3. Compléter votre algorithme pour qu’il permette de connaître, de plus, pour un nombre de commandes donné Nbcommande, le nombre de détaillants ayant bénéficié de la remise. ANNEXE 1 Règles de gestion Une remise de 10 % est accordée aux grossistes pour toute commande qui atteint ou dépasse 50 000 F. Une remise de 5 % est accordée aux détaillants pour toute commande qui atteint ou dépasse 10 000 F. Une remise de 2 % est accordée aux particuliers pour toute commande qui dépasse 2 000 F. algo commande VAR Numcom : chaine *// Numcom : numéro de la commande Codecat : chaine *// G pour Grossiste : D pour Détaillant ; P pour Particulier Brut, Remise, Tauxremise, Net : Réel DEBUT | SAISIR *// Détermination du taux de remise éventuel et montant net de la commande | AFFICHER 2 ALGORITHMES - EXERCICES FIN 3 ALGORITHMES - EXERCICES CORRIGE Exercice I : 1) Code Nom i NbKm InKm TotIndKm Libellé Nom du représentant Compteur Nombre de km parcourus par représentant Indemnité Km par représentant Total versé aux représentants Type Chaine Entier Entier réel Réel Programme Indemnités Kilométriques Var Nom : chaine i, Nbkm : entier InKm, TotIndKm : réel Début Nbkm<-0 InKm<-0 TotIndKm<-0 Pour i:=1 à 10 Afficher "Nom du representant" saisir Nom Afficher "Nombre de Km parcourus" saisir Nbkm si Nbkm>1000 Alors si Nbkm>2500 Alors si Nbkm>5000 Alors InKm<-(2000+2250+3000)+((NbKm-5000)*1) sinon InKm<-(2000+2250)+((NbKm-2500)*1.20) Finsi Sinon InKm<-2000+((NbKm-1000)*1.50) Finsi Sinon InKm<-NbKm*2 Finsi afficher "Indemnités à payer ", InKm TotIndKm<-TotIndKm + InKm Fin pour Afficher "Montant total à payer", TotIndKm Fin 2) L’entreprise ne versera pas de charges sociales car il ne s’agit pas de charges salariales mais de remboursement de frais de déplacement. Exercice 2 : Ci-après une proposition d’algorithme. Le calcul de la remise peut se réaliser dans chacune des alternatives. Les structures alternatives peuvent être imbriquées. 4 ALGORITHMES - EXERCICES algo commande VAR Numcom, Codecat Brut, Remise, Tauxremise, Net : chaine : réel DEBUT | SAISIR Numcom, Brut, Codecat | SI Codecat = "G" | | ALORS SI Brut >= 50000 | | | ALORS Tauxremise 0.1 | | | SINON Tauxremise 0 | | FINSI | FINSI | SI Codecat = "D" | | ALORS SI Brut >= 10000 | | | ALORS Tauxremise 0.05 | | | SINON Tauxremise 0 | | FINSI | FINSI | SI Codecat = "P" | | ALORS SI Brut > 2000 | | | ALORS Tauxremise 0.01 | | | SINON Tauxremise 0 | | FINSI | FINSI | Remise Brut * Tauxremise | Net Brut - Remise | AFFICHER Numcom, Brut, Remise, Net FIN ou de façon plus efficace DEBUT | Tauxremise 0 | SAISIR Numcom, Brut, Codecat | SI Codecat = "G" | | ALORS SI Brut >= 50000 | | | ALORS Tauxremise 0.1 | | FINSI | FINSI | SI Codecat = "D" | | ALORS SI Brut >= 10000 | | | ALORS Tauxremise 0.05 | | FINSI | FINSI | SI Codecat = "P" | | ALORS SI Brut > 2000 | | | ALORS Tauxremise 0.01 | | FINSI | FINSI | Remise Brut * Tauxremise | Net Brut - Remise | AFFICHER Numcom, Brut, Remise, Net FIN 2. TANT QUE… FIN TANT QUE RÉPÉTER… JUSQU'A 5 ALGORITHMES - EXERCICES POUR… FIN POUR (ne nécessite pas d’incrémentation de compteur) Nota : on peut exiger plus de détail, style « saisie de l’élément de référence de la boucle avant la boucle, modification (incrémentation le plus souvent) de l’élément de référence dans la boucle, … » Compléter votre algorithme pour qu’il permette de connaître, de plus, pour un nombre de commandes donné Nbcommande, le nombre de détaillants ayant bénéficié de la remise. Nécessite l’ajout d’une structure itérative avec un compteur des commandes : I dans la solution un compteur des détaillants : NbDetail dans la solution ; ce compteur sera incrémenté uniquement lorsque le détaillant bénéficie de la remise algo commande iération VAR Numcom, Codecat Nb commande, I, NbDetail Brut, Remise, Tauxremise, Net : chaine : entier : réel DEBUT | I:= 0 | NbDetail 0 | SAISIR Nbcommande | POUR I de 1 A Nbcommande | | SAISIR Numcom, Brut, Codecat | | SI Codecat = "G" | | | ALORS SI Brut >= 50000 | | | | ALORS Tauxremise 0.1 | | | | SINON Tauxremise 0 | | | FINSI | | FINSI | | SI Codecat = "D" | | | ALORS SI Brut >= 10000 | | | | ALORS Tauxremise 0.05 | | | | NbDetail NbDetail + 1 | | | | SINON Tauxremise 0 | | | FINSI | | FINSI | | SI Codecat = "P" | | | ALORS SI Brut >2000 | | | | ALORS Tauxremise 0.01 | | | | SINON Tauxremise 0 | | | FINSI | | FINSI | | Remise Brut * Tauxremise | | Net Brut - Remise | | AFFICHER Numcom, Brut, Remise, Net | FIN POUR | AFFICHER NbDetail FIN ou de façon plus efficace DEBUT | I0 | NbDetail 0 | SAISIR Nbcommande | POUR I de 1 A Nbcommande 6 ALGORITHMES - EXERCICES | | Tauxremise 0 | | SAISIR Numcom, Brut, Codecat | | SI Codecat = "G" | | | ALORS SI Brut >= 50000 | | | | ALORS Tauxremise 0.1 | | | FINSI | | FINSI | | SI Codecat = "D" | | | ALORS SI Brut >= 10000 | | | | ALORS Tauxremise 0.05 | | | | NbDetail NbDetail + 1 | | | FINSI | | FINSI | | SI Codecat = "P" | | | ALORS SI Brut >2000 | | | | ALORS Tauxremise 0.01 | | | FINSI | | FINSI | | Remise Brut * Tauxremise | | Net Brut - Remise | | AFFICHER Numcom, Brut, Remise, Net | FIN POUR | AFFICHER NbDetail FIN 7