47
1 PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 PROGRAMMER, C’EST QUOI ? L’écriture d’un programme informatique est une tâche exigeante par sa rigueur. Programmer, c’est définir avec précision le problème à résoudre, décrire pas à pas une solution et, après seulement, l’exprimer dans un langage de programmation. Dans cette démarche, l’activité la plus créative n’est pas le codage, mais l’analyse du problème. L’algorithmique est un outil favorisant la réflexion, l’analyse d’un problème, tout en gommant les difficultés inhérentes au langage de programmation. 1.2 ALGORITHME Le mot vient du nom du mathématicien arabe du 9 e siècle Mohammed Ibn Al-Kharezin. Il en existe beaucoup de définitions. À titre d'exemples, en voici quelques unes : - c’est une succession de calculs numériques (Larousse) ; - c’est un ensemble de règles opératoires propres à un calcul (Petit Robert) ; - c’est une suite finie d’opérations élémentaires constituant un schéma de calcul ou de résolution d'un problème (Petit Larousse) ; - c’est un procédé spécial de résolution d’un certain type de problèmes (Dictionnaire des mathématiques). 1.3 NOTATION ALGORITHMIQUE Dans les actions de la vie quotidienne, notre cerveau déroule à longueur de journée des algorithmes, qu’il s’agisse de faire la cuisine ou de changer une roue de voiture. Les actions ou opérations d’un algorithme sont décrites à l’aide de mots (verbes, locutions, ...) respectant des règles syntaxiques et de présentation qui en facilitent la compréhension. Toutes ces règles définissent la notation algorithmique. Exemple : algorithme relatif au changement d’une roue exprimé en langage naturel. Début 1. Ouvrir le coffre 2. Prendre la roue de secours 3. Si la roue de secours est crevée Alors 4. Appeler un garagiste Sinon 5. Sortir le cric et la clé à boulons du coffre 6. Dévisser légèrement les boulons avec la clé 7. Répéter 8. Tourner la manivelle du cric Jusqu'à ce que la roue crevée ne touche plus le sol 9. Dévisser complètement les boulons 10. Retirer complètement la roue endommagée 11. Répéter 12. Tourner la manivelle du cric Jusqu'à ce que la roue de secours puisse être placée 13. Monter la roue de secours 14. Visser les boulons 15 Abaisser le véhicule avec le cric 16. Visser fortement les boulons 17. Ranger le cric, la clé et la roue crevée Fin si 18. Fermer le coffre Fin Ce simple exemple permet de constater : - Que l’ordre des opérations est important. Il n’est guère possible d’intervertir les opérations 5 et 6 par exemple. - Qu’une ou plusieurs opérations peuvent être dépendantes de conditions (Si ... Alors ...) ou bien répétées (Répéter ... Jusqu'à).

PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

1

PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 PROGRAMMER, C’EST QUOI ? L’écriture d’un programme informatique est une tâche exigeante par sa rigueur. Programmer, c’est définir avec précision le problème à résoudre, décrire pas à pas une solution et, après seulement, l’exprimer dans un langage de programmation. Dans cette démarche, l’activité la plus créative n’est pas le codage, mais l’analyse du problème. L’algorithmique est un outil favorisant la réflexion, l’analyse d’un problème, tout en gommant les difficultés inhérentes au langage de programmation. 1.2 ALGORITHME Le mot vient du nom du mathématicien arabe du 9e siècle Mohammed Ibn Al-Kharezin. Il en existe beaucoup de définitions. À titre d'exemples, en voici quelques unes : - c’est une succession de calculs numériques (Larousse) ; - c’est un ensemble de règles opératoires propres à un calcul (Petit Robert) ; - c’est une suite finie d’opérations élémentaires constituant un schéma de calcul ou de résolution d'un problème (Petit

Larousse) ; - c’est un procédé spécial de résolution d’un certain type de problèmes (Dictionnaire des mathématiques). 1.3 NOTATION ALGORITHMIQUE Dans les actions de la vie quotidienne, notre cerveau déroule à longueur de journée des algorithmes, qu’il s’agisse de faire la cuisine ou de changer une roue de voiture. Les actions ou opérations d’un algorithme sont décrites à l’aide de mots (verbes, locutions, ...) respectant des règles syntaxiques et de présentation qui en facilitent la compréhension. Toutes ces règles définissent la notation algorithmique. Exemple : algorithme relatif au changement d’une roue exprimé en langage naturel. Début

1. Ouvrir le coffre 2. Prendre la roue de secours 3. Si la roue de secours est crevée Alors 4. Appeler un garagiste Sinon 5. Sortir le cric et la clé à boulons du coffre 6. Dévisser légèrement les boulons avec la clé 7. Répéter 8. Tourner la manivelle du cric Jusqu'à ce que la roue crevée ne touche plus le sol 9. Dévisser complètement les boulons 10. Retirer complètement la roue endommagée 11. Répéter 12. Tourner la manivelle du cric Jusqu'à ce que la roue de secours puisse être placée 13. Monter la roue de secours 14. Visser les boulons 15 Abaisser le véhicule avec le cric 16. Visser fortement les boulons 17. Ranger le cric, la clé et la roue crevée Fin si 18. Fermer le coffre

Fin Ce simple exemple permet de constater : - Que l’ordre des opérations est important. Il n’est guère possible d’intervertir les opérations 5 et 6 par exemple. - Qu’une ou plusieurs opérations peuvent être dépendantes de conditions (Si ... Alors ...) ou bien répétées (Répéter ...

Jusqu'à).

Page 2: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

2

Complétons la définition d’un algorithme en précisant que les actions d’un algorithme s’articulent à l’aide de structures de base. Les structures de base d’un algorithme sont : - la structure séquentielle (ensemble d’opérations à la suite les unes des autres), - la structure conditionnelle (ensemble d’opérations soumises à une condition); - la structure répétitive (ensemble d’opérations répétées un nombre fini de fois). Ces trois structures constituent les briques de base de tout algorithme et permettent de résoudre n’importe quel problème, qu’il s’agisse de la simple addition de deux nombres ou du pilotage d’un module lunaire. 1.4 CONVENTION SYNTAXIQUE Voici un premier exemple de représentation d’un algorithme. Algo Somme Const Pi 31416 Var Diamètre, Circonférence : réel Début

Afficher "Quel est le diamètre du cercle" Saisir Diamètre Circonférence Diamètre * Pi Afficher "La circonférence est : ", Circonférence

Fin Les mots clefs, constitutifs de la syntaxe de l’algorithme, sont indiqués en gras. Les lignes de l’algorithme sont indentées afin d’en faciliter la lecture. 1.5 APPLICATION La préparation des œufs sur le plat est une recette courante et simple à mettre en œuvre. La poêle étant votre ustensile de travail (ordinateur), écrivez la suite des opérations a effectuer (algorithme) avec les verbes (instructions) et les ingrédients (variables) suivantes : Instructions : prendre, servir, casser, chauffer, saupoudrer Variables : sel, poivre, œufs, beurre, minute. Les quantités pour cette recette sont les suivantes : 4 œufs, 15 g de beurre, une pincée de sel et une pincée de poivre, la durée de chauffe du beurre est au départ de 1 minute, la durée de chauffe des œufs est de 3 minutes. Travail à faire : réaliser l’algorithme des œufs sur le plat. DEBUT Prendre 15 g de beurre Chauffer 1 minute Prendre 4 œufs Chauffer 3 minutes Casser les œufs Prendre une pincée de sel et de poivre Saupoudrer Servir les œufs FIN

Page 3: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

3

2. NOTIONS DE VARIABLES ET DE CONSTANTES 2.1 OBJETS Un algorithme utilise des objets (tout comme le cuisinier qui utilise des ingrédients !). Un algorithme simple utilise principalement des objets de base comme les littéraux, les constantes ou les variables. Littéral : c’est une valeur de type numérique ou alphanumérique.

- 11 ; 1258 ; 20.6 ; 3.14116 sont des littéraux numériques. - « Bonjour » ; « Le 20 janvier 1998 » sont des littéraux alphanumériques.

Constante : c’est un objet qui ne peut pas être modifié dans l’algorithme. Variable : c’est un objet appelé à subir des transformations au cours de l’algorithme. Constante et variable se caractérisent par : - un identificateur : appellation donnée à l’objet ; - une valeur : c'est le contenu de l’objet. Cette valeur est susceptible d’évoluer si l’objet est une variable ; - un type : domaine dans lequel l’objet puise sa valeur. Le type détermine les opérations que l'on peut appliquer à

l'objet. 2.2 TYPES D’OBJET EXISTANTS EN ALGORITMIQUE

Types d’objets Exemples de valeurs possibles Quelques opérations associées

BOOLEEN

VRAI FAUX

Comparaison (=, >, <, …) Négation (NON) Conjonction (ET) Disjonction (OU)

CARACTERE "B" "&" "8" "!" Comparaison (=, >, <, …) Conversions (CODE, …)

ENTIER

88 -1012 Comparaison (=, >, <, …) Addition (+) Division (/) Division entière (DIV)

REEL

12,345 12, 345678.108 Comparaison (=, >, <, …) Addition (+) Division (/) Partie entière…

CHAINE DE CARACTERES

"Bonjour" "1722121146" Comparaison (=, >, <, …) Longueur Extraction Concaténation (+)…

2.3 CONVENTION SYNTAXIQUE EN ALGORITHMIQUE Tout objet doit être déclaré avant son utilisation à l’aide de mots clés Const et Var. Exemple : les objets manipulés par l’algorithme ci-après sont : Diamètre, Pi et Circonférence. - Diamètre et Circonférence sont des variables du type réel ; - Pi est une constante du type réel dont la valeur est connue à la déclaration. Algo Somme Const Pi 31416 Var Diamètre, Circonférence : réel Début

Afficher "Quel est le diamètre du cercle" Saisir Diamètre Circonférence Diamètre * Pi Afficher "La circonférence est : ", Circonférence

Fin

Page 4: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

4

2.4 EXERCICE : LA DOULOUREUSE Pour établir une facture simple, il suffit de compléter l’en-tête avec la date de la facture, le numéro de la facture (1, 2, 3…), le nom, l’adresse c’est à dire la rue, le code postal et la ville du client, puis de compléter les différentes lignes avec la référence du produit (R001, P003, X456…), sa désignation (30 lettres maximum), son prix unitaire H.T., la quantité facturée et le montant H.T., enfin de calculer le total H.T., la TVA au taux unique de 19,6 % et le net à payer. Complétez le tableau ci-dessous en tenant compte des indications fournies :

Variable Constante Littéral Type Date_facture X Chaîne Num_facture X Entier Nom_client X Chaîne Rue_client X Chaîne Postal_client X Chaîne Ville_client X Chaîne Référence X Chaîne Désignation X Chaîne Puht X Réel Quantité X Entier Montant_ht X Réel Total_ht X Réel Taux_TVA X Réel 19,6 X Réel Tva X Réel Net_à_payer X Réel

Page 5: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

5

3. EXPRESSIONS ET OPERATEURS Les variables et constantes peuvent être combinées entre elles au travers d’opérateurs pour former des expressions. On distingue les expressions arithmétiques et les expressions logiques. MontantHT * TauxTVA est une expression arithmétique permettant de calculer un montant TTC à l’aide d’une opération arithmétique. Longueur > Largeur est une expression logique utilisant un opérateur relationnel permettant de déterminer si la valeur de la variable Longueur est supérieure à la valeur de la variable Largeur. 3.1 EXPRESSIONS ET OPERATEURS ARITHMETIQUES Soit 20 la valeur de a et 2 la valeur de b :

Opérations Opérateurs Exemples Résultats Addition + a + b 22 Soustraction - a - b 18 Multiplication * a * b 40 Division / a / b 10 Élévation à la puissance ^ a ^ b 400 Division entière Div a Div b 20 Reste de la division entière Mod a Mod b 0

3.2 EXPRESSIONS LOGIQUES 3.2.1 OPERATEURS RELATIONNELS Ils s’appliquent essentiellement aux objets de type entier, réel, caractère et chaîne de caractères. Ainsi, il est possible de comparer des données de même type entre elles pour savoir si elles sont égales, plus grandes ou plus petites. La comparaison de deux chaînes de caractères est également possible et s’effectue caractère par caractère, de gauche à droite. Le résultat est soit vrai (l’expression logique est vérifiée) soit faux (l’expression logique n’est pas vérifiée).

Opérateurs Significations Exemples Résultats = Egal 20 = 10 * 2 Vrai

<> Différent de "A" <> "G" Vrai < Inférieur 11 < 8 Vrai

<= Inférieur ou égal 20 <= 10*2 Vrai > Supérieur 8 > 11 Faux

>= Supérieur ou égal "au revoir" >= " bonjour" Faux 3.2.2 OPERATEURS LOGIQUES Les expressions logiques peuvent être reliées à l’aide d’opérateurs logiques

Opérateur ET logique Opérateur OU logique A B A ET B A B A OU B

Vrai Vrai Vrai Vrai Vrai Vrai Vrai Faux Faux Vrai Faux Vrai Faux Vrai Faux Faux Vrai Vrai Faux Faux Faux Faux Faux Faux

Exemples :

Expressions logiques Résultats intermédiaires Résultats Vrai OU (Vrai ET Faux) Vrai OU (Faux) Vrai (11 > 10) OU (20 > 18) Vrai OU Vrai Vrai (8 >= 11) ET (88 > 68) Faux ET Vrai Faux

(11 = 11) ET ("Au revoir" < "Bonjour") Vrai ET Faux Faux

Page 6: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

6

3.3 EXPRESSIONS CHAINES DE CARACTERES L’opérateur & permet la concaténation de deux chaînes de caractères. Exemples :

Expressions chaînes de caractères Résultats "Henri" & "IV" Henri IV "Nous sommes" & "le 20 octobre 1998" Nous sommes le 20 octobre 1998

3.4 EXERCICES 3.4.1 EXERCICE 1 : CAS D’ECOLE Const Var c1 = "Lycée" x : chaîne(30) y : chaîne(15) a) Complétez le tableau suivant :

Valeurs des variables avant évaluation de l'expression Expression Résultat de l'évaluation de l'expression

x y Cassin René c1 & y & x Lycée RenéCassin Briand Aristide "Collège " & x & " " & y Collège Briand Aristide Cassin René c1 & x & " " & y Lycée Cassin René Couffignal Louis x = "Briand" Faux Armand Louis y = "Louis" Vrai

b) L'expression (x=Cassin) est-elle formulée correctement ? Donnez la formulation correcte de cette expression. Non. La réponse correcte est x="Cassin". 3.4.2 EXERCICE 2 : CASSE-TETE Const Var c1 = 2 a, b : entiers c2 = 10 x, y : réels a) Complétez le tableau suivant :

Valeurs des variables avant évaluation de l'expression Expression Résultat de l'évaluation de l'expression

A b x y 40 5 12.5 33.33 x * c2 / b (12.5*10/5)=25 40 5 12.5 33.33 a Mod c1 (40/2=20 pas de reste) 0 40 5 12.5 33.33 (a + b) * - x (40+5)*-12.5=-562.5 40 5 12.5 33.33 x >= 12.5 12.5>=12.5 Vrai 40 5 12.5 33.33 a Div c2 < 0 Expression incorrecte car c2 par entier 40 5 12.5 33.33 b ^ 4 5^4=625 40 5 12.5 33.33 (a - b) < (y - x) (40-5) < (33.33-12.5)=35<20.83 Faux 40 5 12.5 33.33 b <> 5 5 <> 5 Faux 40 5 12.5 33.33 -y * c2 -33.33*10=-333.3

b) L’expression ("Bonjour" & x & y) n’est pas correcte, pourquoi ? Parce que x et y sont des réels. L’opération de concaténation ne peut s’effectuer que sur des chaînes de caractères. 3.4.3 EXERCICE 3 : CASSE-TETE Const Var c1 = 10 a, b : chaînes c2 = "67000" c, d : réels c3 = 20.6

Page 7: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

7

a) Complétez le tableau suivant :

Valeurs des variables avant évaluation de l'expression Expression Résultat de l'évaluation de l'expression a b c d

Strasbourg 68000 1000 200 (c - d) * c3 (1000-200)*20.6=16480 Strasbourg 68000 1000 200 a = "Colmar" Faux Strasbourg 68000 1000 200 b >= c2 "68000">="67000" Vrai Strasbourg 68000 1000 200 c Mod 10 1000 Mod 10 = 0 Strasbourg 68000 1000 200 a < "Belfort" ET b = c2 "Strasbourg"<"Belfort" ET "68000" = "67000") Faux Strasbourg 68000 1000 200 d = c * 0.20 200=1000*0.20 Vrai Strasbourg 68000 1000 200 a = b OU c = d "Strasbourg"="68000" OU 1000=200 Faux Strasbourg 68000 1000 200 c * c1 + d ^ 2 1000*10 + 200^2=50000

b) L’expression (b-c) n’est pas correcte, pourquoi ? Parce que b est du type chaîne de caractère. La soustraction ne peut être effectuée sur ce type de donnée. c) Trouvez les numéros de chaque réponse à chacune des questions suivantes :

Questions N° de la réponse correcte Réponses possibles

A a = "Belfort" Faux : 2 1 206 B c1*c1 10*10=100 : 6 2 Faux C c3/c1 20.6/10=2.06 : 5 3 Vrai D a = "Strasbourg" Et c2 = "67000" Vrai : 3 4 Faux E b = a Faux : 4 5 2.06 F b = a Et a = "Bayonne" Faux : 7 6 100 G c1 = 10 Ou c2 = "88000" Vrai : 8 7 Faux H c1 = 10 Et c2 = "88000" Faux : 10 8 Vrai I a = "Strasbourg" Ou c2 = "67000" Vrai : 11 9 1 J c1/c1 10/10=1 : 9 10 Faux K (c1*c1) * (c3/c1) (10*10)* (20.6/10)=206 : 1 11 Vrai

Page 8: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

8

4. INSTRUCTIONS D’AFFECTATION 4.1 PRINCIPES L’instruction d’affectation permet de valoriser une variable à partir d’une variable, d’une constante, d’un littéral, d’une expression arithmétique ou d’une expression logique. Le symbole utilisé est

Opération Exemples Valeurs de A

avant instruction

Valeurs de B avant

instruction

Valeurs de A après

instruction

Valeurs de B après

instruction Affectation d’un littéral A 11 8 11 Affectation d’une variable A B 8 11 11 Affectation d’une expression arithmétique A B + 2 8 18 20 Affectation d’une expression logique Bool A > B 11 8 vrai

Exemple d’une suite d’instruction d’affectation : Total 826 Prix Total Somme Total + 8 Somme Somme + 50 Après exécution de l’ensemble de ces instructions d’affectation, les variables Total et Prix contiennent 826 et la variable Somme contient la valeur 884. Remarques : - L’affectation remplace la valeur de l’objet indiqué à gauche du caractère - La valeur de l’objet à droite du signe n’est pas touchée par l’affectation. - Ne pas confondre le symbole d’affectation avec le symbole mathématique = - L’expression Somme Somme + 50 signifie que la nouvelle valeur de Somme est égale à l’ancienne valeur plus 50

et non que 834 = 834 + 50 qui est mathématique absurde ! 4.2 EXERCICES EXERCICE 1 Écrivez l’algorithme calculant la valeur de la fonction y = a x + b pour les valeurs suivantes : a = 5 ; x = 10 et b = 6 (toutes les variables sont des réels). Algo exercice 1 Var a, x, b, y :réels Début a 5 x 10 b -6 y a * x + b

Page 9: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

9

EXERCICE 2 Complétez le tableau suivant (les instructions sont exécutées de haut en bas et dans l’ordre ; la valeur rien signifie que la variable n’est pas encore initialisée) :

Valeurs avant exécution de l'affectation Instructions

Instructions correctes (Oui/Non)

Valeurs après exécution de l'affectation

(si l'instruction est correcte) a :

entier b :

chaîne x :

réel y :

réel a b x y

rien rien rien rien a 20 Oui 20 20 x a * 2.5 Oui 20 50 20 50 y x div 10 Oui 20 50 5 20 50 5 b "A" Oui 20 A 50 5 20 A 50 5 a x + b Non 20 A 50 5 20 A 50 5 a a + 10 Oui 30 A 50 5 30 A 50 5 b b & "B" Oui 30 AB 50 5 30 AB 50 5 x a / b Non 30 AB 50 5 30 AB 50 5 y + 5 x * a Non 30 AB 50 5

EXERCICE 3 Complétez le tableau suivant (les instructions sont exécutées de haut en bas et dans l’ordre) :

Valeurs avant exécution de l'affectation Instructions

Instructions correctes (Oui/Non)

Valeurs après exécution de l'affectation

(si l'instruction est correcte) a :

booléen b :

booléen c :

réel d :

chaîne a b c d

rien rien rien rien c -12.25 Oui -12.25 -12.25 rien d "Z" Oui -12.25 Z - -12.25 Z a b ET c Non

c est un réel -12.25 Z

-12.25 Z b d < "X" Oui Faux -12.25 Z Faux -12.25 Z a c < 0 Oui Vrai Faux -12.25 Z

Vrai Faux -12.25 Z a a ou b Oui Vrai Faux -12.25 Z Vrai Faux -12.25 Z c<0 a Non Vrai Faux -12.25 Z Vrai Faux -12.25 Z b c<>0 ET

d "Z" Oui Vrai Vrai -12.25 Z

Vrai Vrai -12.25 Z c a Mod b Non a et b sont booléens

Vrai Vrai -12.25 Z

Page 10: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

10

5. INSTRUCTIONS D’ENTREE-SORTIE Le rôle des instructions d’entrée-sortie est d’assurer la prise en compte et la restitution d’informations à partir des organes d’entrée-sortie de l’ordinateur (clavier, écran, imprimante, ...). On distingue principalement : - l’instruction d’entrée autorisant la saisie de l’information à partir du clavier ; - les instructions de sortie autorisant :

- l’affichage des informations à l’écran, - l’impression des informations sur papier.

5.1 LA SAISIE DES DONNEES L’instruction d’entrée Saisir autorise la saisie de données à partir du clavier. Un message permet de guider l’utilisateur. Cette instruction sert principalement à valoriser une ou plusieurs variables. Ainsi, l’utilisateur communique à l’ordinateur les valeurs des objets. Exemple : Saisir "Veuillez indiquer la valeur du nombre : ", Nombre

Saisir "Veuillez indiquer les paramètres a et b : ", A, B Action : algorithme de base du fonctionnement de l’instruction Saisir À la rencontre d’une instruction "saisir", le programme est interrompu. - La chaîne de caractères est éventuellement affichée, pour guider l’utilisateur. - Un curseur est affiché immédiatement après la chaîne (point clignotant). - L’utilisateur entre au clavier la donnée. - La saisie est terminée par l’appui sur la touche Envoi (Entrée). - La(les) valeur(s) saisie(s) est(sont) affectée(s) à(aux) l’objet(s) Le déroulement du programme continue à l'instruction suivante. 5.2 LA RESTITUTION DES RESULTATS La restitution des résultats s’effectue à l’aide des instructions : - Afficher : affichage des données à l’écran. - Imprimer : impression des données sur papier. Chacune des instructions peut indifféremment restituer le contenu d’une constante, variable, expression numérique ou expression logique. Des messages sous forme de chaînes de caractères permettent d’agrémenter la présentation des informations. Les différentes informations sont séparées par des virgules. Le mot clé tab(nn) permet de positionner à partir de la position (dite de tabulation) nn la donnée à afficher ou à imprimer. Exemples : Afficher Total, Somme Afficher Tab(20),"Le nom du client est: ",tab(60),NomClient Imprimer Tab(20), Total, Tab(60), Somme Imprimer "Le nom du client est: ", NomClient Pour les exercices suivants : 1. Faites l’inventaire des données entrées et sorties. 2. Écrivez les expressions mathématiques (s’il y a lieu) permettant d’obtenir les résultats désirés. 3. Concevez un modèle d’écran. 4. Écrivez l’algorithme.

Page 11: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

11

5.3 EXERCICES EXERCICE 1 : Calculez et affichez le produit de 3 nombres entiers. 1. Inventaire des données entrées et sorties :

DONNÉES ENTRÉE SORTIE n1 X n2 X n3 X Produit X

2. Expression mathématique :

Produit n1 * n2 * n3 3. Modèle d’écran :

PRODUIT DE 3 NOMBRES Valeur du premier nombre ? 999 Valeur du deuxième nombre ? 999 Valeur du troisième nombre ? 999 Le produit de ces nombres est 999

4. Algorithme :

Algo Exercice 1 Var n1, n2, n3, Produit : entier Début Afficher "PRODUIT DE 3 NOMBRES" Saisir "Valeur du premier nombre ? ",n1 Saisir "Valeur du deuxième nombre ? ",n2 Saisir "Valeur du troisième nombre ? ",n3 Produit n1 * n2 * n3 Afficher "Le produit de ces nombres est ",produit Fin

EXERCICE 2 : Calculez l’âge (en année) d’une personne dont on aura demandé le nom et l’année de naissance, puis affichez le texte suivant : xxx[nom]xxx vous avez 999 ans. Remarque : xxx[nom]xxx représente le nom et 999 représente l’âge de la personne. 1. Inventaire des données entrées et sorties :

DONNÉES ENTRÉE SORTIE Nom X X année_naissance X année_courante X Age X

2. Expression mathématique :

Age année_courante - année_naissance 3. Modèle d’écran :

QUEL EST VOTRE AGE ? Votre nom ? xxxxxxx Votre année de naissance (9999) ? 9999

Page 12: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

12

Année courante (9999) ? 9999 xxxx[nom]xxx vous avez 999 ans

4. Algorithme :

Algo Exercice2 Var nom : chaîne année_naissance, année_courante, âge : entiers Début Afficher "QUEL EST VOTRE AGE ?" Saisir "Votre nom ? ",nom Saisir "Votre année de naissance (9999) ? ",année_naissance Saisir "Année courante (9999) ? ",année_courante âge année_courante - année_naissance Afficher nom, " vous avez ",âge, " ans" Fin

EXERCICE 3 : Calculez et affichez le périmètre et la surface d’un carré, d’un rectangle et d’un cercle (avec pi = 3,1416). 1. Inventaire des données entrées et sorties :

DONNÉES ENTRÉE SORTIE Côté X Longueur X Largeur X Rayon X Périmètre X Surface X

2. Expression mathématique :

Pour le carré : périmètre côté *4 surface côté * côté

Pour le rectangle :

périmètre (longueur + largeur) * 2 surface longueur * largeur

Pour le cercle (avec pi déclaré en constante) :

périmètre 2 * pi * rayon surface pi * r * r ou surface pi * r ^ 2

3. Modèle d’écran :

PERIMETRES ET SURFACES D’un carré Côté ? 999.99 Périmètre = 999.99 Surface = 999.99 D’un rectangle Longueur ? 999.99 Largeur ? 999.99 Périmètre = 999.99 Surface = 999.99 D’un cercle Rayon ? 999.99 Circonférence = 999.99 Surface = 999.99

Page 13: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

13

4. Algorithme :

Algo Exercice 3 Const pi = 3.1416 Var côté, longueur, largeur, rayon, périmètre, surface : réels Début

Afficher "PERIMETRES ET SURFACES" Afficher "D’un carré" Saisir "Côté ? ",côté Périmètre côté * 4 Surface côté ^ 2 Afficher "Périmètre = ",périmètre Afficher "Surface = ",surface Afficher Afficher "D’un rectangle" Saisir "Longueur ? ",longueur Saisir "Largeur ? ",largeur Périmètre (longueur + largeur) * 2 Surface longueur * largeur Afficher "Périmètre = ",périmètre Afficher "Surface = ",surface Afficher Afficher "D’un cercle" Saisir "Rayon ? " ,rayon Périmètre 2 * pi * rayon Surface pi * rayon ^ 2 Afficher "Circonférence = ",périmètre Afficher "Surface = ",surface

Fin EXERCICE 4 : Écrivez l’algorithme réalisant le calcul de la fonction y = a.x² + b.x + c 1. Inventaire des données entrées et sorties :

DONNÉES ENTRÉE SORTIE a X b X c X x X y X

2. Expression mathématique :

y a * x * x + b * x + c 3. Modèle d’écran :

Fonction y = a.x² + b.x + c Valeur de a ? Valeur de b ? Valeur de c ? Valeur de x ? Résultat y =

Page 14: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

14

4. Algorithme :

Algo Exercice 4 Var a, b, c, x, y : réels Début afficher "Fonction y = a.x² + b.x + c" saisir "Valeur de a ? ",a saisir "Valeur de b ? ",b saisir "Valeur de c ? ",c saisir "Valeur de x ? ",x y a * x ^ 2 + b * x + c afficher "Résultat y = ",y Fin

EXERCICE 5 : Écrivez l’algorithme d’une facture simple (une seule ligne de facturation), dont les modèles d’écran et d’état (impression) sont les suivants : Modèle d’écran :

Nom du client ? Adresse rue ? Code postal ? Ville ? N° facture ? Date facture ? Référence du produit ? Désignation du produit ? Quantité facturée ? Prix unitaire hors-taxe ?

Modèle d’état :

[Nom du client] [adresse rue]

[code postal] [ville] N° facture : 9999 Date facture : jj/mm/aaaa Référence Désignation Quantité Puht Montant ht xxxxx xxxxxxxxxxxxxxx 999 99.99 99999.99 Total ht 99999.99 Tva 20.6 % 99999.99 Net à payer 999999.99

Les positions de tabulation sont les suivantes : - position 12 : Désignation - position 30 : Quantité - position 40 : Nom du client, adresse rue, code postal, Puht, Total ht, Tva, Net à payer - position 55 : Montant ht 1. Inventaire des données entrées et sorties :

DONNÉES ENTRÉE SORTIE nom X X rue X X postal X X ville X X num_fact X X date_fact X X référence X X

Page 15: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

15

désignation X X quantité X X prix_ht X X montant_ht X total_ht X tva X taux_tva X net X

2. Expression mathématique :

montant_ht quantité * prix_ht total_ht montant_ht tva total_ht * 0.206 net total_ht + tva

3. Algorithme :

Algo Exercice 5 Const

taux_tva = 0.206 Var

nom, rue, postal, ville, date_fact, référence, désignation : chaînes num_fact : entier quantité : décimal(3) prix_ht : décimal(2,2) montant_ht, total_ht, tva : décimal(5,2) net : décimal(6,2)

Début Saisir "Nom du client ? ",nom Saisir "Adresse rue ? ",rue Saisir "Code postal ? ",postal Saisir "Ville ? ",ville Saisir "N° facture ? ",num_fact Saisir "Date facture ? ",date_fact Saisir "Référence du produit ? ",référence Saisir "Désignation du produit ? ",désignation Saisir "Quantité facturée ? ",quantité Saisir "Prix unitaire hors-taxe ? ",prix_ht Imprimer Tab(40),nom Imprimer Tab(40),rue Imprimer Tab(40),postal, " ",ville Imprimer "N° facture : ",num_fact Imprimer "Date facture :",date_fact Imprimer "Référence", Tab(12), "Désignation", Tab(30), "Quantité", Tab(40), "Puht" Imprimer Tab(55),"Montant ht" montant_ht prix_ht * quantité Imprimer référence, Tab(12), désignation, Tab(30),quantité Imprimer Tab(40), prix_ht, Tab(55),montant_ht total_ht montant_ht tva total_ht * taux_tva net total_ht + tva Imprimer Imprimer Tab(40),"Total ht", Tab(55), total_ht Imprimer Tab(40),"Tva 20,6%", Tab(55),tva Imprimer Tab(40),"Net à payer", Tab(55),net

Fin

Page 16: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

16

6. LA STRUCTURE CONDITIONNELLE Lorsque le traitement à effectuer est fonction d’une ou plusieurs conditions, il est nécessaire d’utiliser une instruction conditionnelle. L’instruction conditionnelle peut être représentée à l’aide : - de la structure alternative, - de la structure de choix. 6.1 LA STRUCTURE ALTERNATIVE La structure alternative permet d’exécuter, à un instant donné, une action ou une autre action, exclusivement l’une de l’autre. Il s’agit donc de deux actions conditionnées par des prédicats complémentaires. La syntaxe permet d’aboutir à deux grandes classes d’instructions alternatives : SI <expression logique> SI <expression logique> ALORS {<instruction si vrai>} ALORS {<instruction si vrai>} SINON {<instruction si faux>} FIN SI FIN SI Alternative appauvrie Action : la sémantique de la structure est la suivante : - Quand <expression logique> est vraie, <instruction si vrai> est exécutée et <instruction si faux> est ignorée. - Par contre, quand <expression logique> est fausse, on exécute <instruction si faux> et on ignore <instruction si vrai>. Exemple : Afficher le plus grand des deux nombres a et b

Algo PlusGrand Var a, b : entier Début Saisir "Entrez deux nombres : ", a, b Si a > b Alors Afficher "Le plus grand des deux est : ", a Sinon Si a = b Alors Afficher "Les nombres ", a, " et ", b, " sont égaux" Sinon Afficher "Le plus grand des deux est : ", b Fin Si Fin Si Fin

6.2 LA STRUCTURE DE CHOIX La sélection ou choix multiple permet de présenter une solution à des problèmes dans lesquels un nombre important de cas, mutuellement exclusifs, sont à envisager en fonction des valeurs prises par une seule variable ou expression. Puisque chaque action est exclusive des autres, la structure sélective correspond à une imbrication d’alternatives. Syntaxe :

Selon <expression> Cas expression : <instructions> Cas expression : <instructions> … Cas Sinon : <instructions> Fin Selon

L’algorithme ainsi obtenu est bien plus lisible et plus compacte quant au nombre de lignes nécessaires.

Page 17: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

17

Exemple : Attribution de la mention à un élève en fonction de sa moyenne générale.

Algo Mention Var NomElève, Mention : chaîne MoyenneGénérale : réel Début Saisir "Veuillez indiquer le nom de l’élève ", NomElève Saisir "Veuillez indiquer la moyenne de l’élève", MoyenneGénérale Selon MoyenneGénérale Cas >= 0 et <= 8 : Mention "Passable" Cas > 8 et <=12 : Mention "Assez bien" Cas > 12 et <= 15 : Mention "Bien" Cas >15 et <= 20 : Mention "Très bien" Cas Sinon : Afficher "La moyenne générale n’est pas comprise entre 0 et 20" Fin selon Si MoyenneGénérale >= 0 et MoyenneGénérale <= 20 Alors Afficher "L’élève ", NomElève, " obtient la mention ", Mention Fin Si Fin

6.3 EXERCICES EXERCICE 1 Connaissant le montant hors taxe d’une vente et le code de remise (0 = pas de remise, 1 = remise de 15 %, 2 = remise de 25 %), calculez et affichez le taux ainsi que la remise correspondante. On supposera que le code remise est bien saisi (pas d’erreur de saisie). a) Complétez la table de vérité suivante : CONDITIONS code_remise = 0 O O N N code_remise = 1 O N O N ACTIONS taux_remise 0 X taux_remise 15 X taux_remise 25 X affichage taux_remise X X X calcul remise X X X

b) Écrivez l’algorithme correspondant en utilisant la structure alternative.

Algo Exercice 1b Const taux1 = 15 taux2 = 25 Var code_remise : entier montant, taux, remise : réels Début Saisir "Montant ? ",montant Saisir "Code remise (0, 1 ou 2) ? ",code_remise Si code_remise = 0 Alors taux 0 Sinon Si code_remise = 1 alors Alors taux taux1 Sinon taux taux2 Fin si Fin si remise montant * taux / 100 Afficher "Le taux est de ",taux," %" Afficher "la remise est de ",remise," F" Fin

Page 18: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

18

c) Écrivez l’algorithme correspondant en utilisant la structure de choix.

Algo Exercice 1c Const taux1 = 15 taux2 = 25 Var code_remise : entier montant, taux, remise : réels Début Saisir "Montant ? ",montant Saisir "Code remise (0, 1 ou 2) ? ",code_remise Selon code_remise cas 0 : taux 0 cas 1 : taux taux1 cas 2 : taux taux2 Fin selon remise montant * taux / 100 Afficher "le taux est de ",taux," %" Afficher "la remise est de ",remise," F" Fin

EXERCICE 2 Sachant que le type et le nom des variables déclarées sont corrects, indiquez le numéro de la ligne erronée, puis la version correcte. Le système de rémunération des représentants de l’entreprise CASE est le suivant : - Fixe mensuel de 1 200 €. - Prime d’ancienneté : elle est égale à 0 en dessous de 3 ans d’ancienneté et égale à 5 % du fixe à partir de 3 ans

d’ancienneté. - Les primes sont intégrées dans le salaire brut.

1 Algo CASE 2 Const 3 fixe = "1200" 4 Var 5 ancienneté, taux_ancienneté : entiers 6 prime_ancienneté, rémunération : réels 7 Début 8 Saisir "Ancienneté en année ? " 9 Si ancienneté < "3" 10 Alors taux_ancieneté 0 11 Sinon taux_ancienneté 5 12 prime_ancienneté fixe * taux_ancienneté 13 rémunération fixe + prime_ancienneté 14 Afficher Prime d’ancienneté = , prime_ancienneté 15 Afficher "Salaire brut total = " 16 Fin

Ligne 3 : fixe = 1200 (constante numérique et non alpha_numérique) Ligne 8 : saisir "Ancienneté en années ?",ancienneté Ligne 9 : si ancienneté < 3 alors (ancienneté est de type entier) Ligne 10 : taux_ancienneté 0 (manque un n au nom de la variable) Ligne 12 : finsi (manque cette ligne) Ligne 12 : prime_ancienneté fixe * taux_ancienneté / 100 Ligne 14 : afficher "Prime d'ancienneté = ",prime_ancienneté Ligne 15 : afficher "Salaire brut total = ",rémunération

EXERCICE 3 Après avoir saisi (correctement) le jour en chiffre et le mois en chiffre d’une date, affichez cette date sous la forme suivante : Nous sommes le [jour] [mois_en_clair] Par exemple : jour = 15 et mois = 9 donne "Nous somme le 15 septembre". On utilisera de préférence la structure de choix pour cet algorithme.

Page 19: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

19

Algo Exercice 3 Var jour, mois : entiers mois_en_clair : chaîne Début Saisir "jour ? ",jour Saisir "mois ? ",mois Selon mois cas 1 : mois_en_clair " janvier" cas 2 : mois_en_clair " février" cas 3 : mois_en_clair " mars" cas 4 : mois_en_clair " avril" cas 5 : mois_en_clair " mai" cas 6 : mois_en_clair " juin" cas 7 : mois_en_clair " juillet" cas 8 : mois_en_clair " août" cas 9 : mois_en_clair " septembre" cas 10 : mois_en_clair " octobre" cas 11 : mois_en_clair " novembre" cas 12 : mois_en_clair " décembre" Fin selon Afficher "Nous sommes le ", jour, " ", mois_en_clair Fin

EXERCICE 4 Voilà une petite calculatrice très simple. En effet, seules les opérations + - * / sont disponibles. Après la saisie du premier opérande, de l’opérateur, puis du deuxième opérande, affichez le résultat de l’opération. Si l’opération demandée est une division par 0, l’algorithme affichera le message "Division par 0 impossible".

Algo Exercice 4 Var op1, op2, résultat : réels opérateur : caractère Début Saisir "Donner la valeur du premier opérande : ",op1 Saisir "Donner l’opérateur (+ - * ou /) : ",opérateur Saisir "Donner la valeur du deuxième opérande : ",op2 Si opérateur = "+" Alors résultat op1 + op2 Sinon Si opérateur = "-" Alors résultat op1 - op2 Sinon Si opérateur = "*" Alors résultat op1 * op2 Sinon Si op2 <> 0 Alors résultat op1 / op2 Fin si Fin si Fin si Fin si Si opérateur = "/" et op2 = 0 Alors Afficher "Division par zéro impossible" Sinon Afficher "Le résultat est ",résultat Fin si Fin

EXERCICE 5 Une entreprise de location loue ses véhicules de tourisme aux conditions suivantes : - Forfait journalier de 50 € H.T. - Les 50 premiers kilomètres sont gratuits. - Les 450 km suivants sont à 1,25 € du km. - Les km suivants sont facturés à 1,25 € du km majoré de 10 %.

Page 20: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

20

Calculez et affichez le montant à payer pour une location de n jours pour x kilomètres parcourus.

Algo Exercice 5 Const valeur_forfait = 50 km1 = 50 km2 = 450 prix_km = 1.25 valeur_taux_majoration = 0.10 Var n, x : entiers montant_à_payer, montant_kms : réels Début Saisir "Nombre de jours de location ? ",n Saisir "Nombre de km parcourus ? ", x Si x <= km1 Alors montant_kms 0 Sinon x x - km1 Si x <= km2 Alors montant_kms x * prix_km Sinon montant_kms km2 * prix_km + ((x - km2) * prix_km) * (1 + valeur_taux_majoration) Fin si Fin si montant_à_payer valeur_forfait * n + montant_kms Afficher "Le montant à payer est de ",montant_à_payer Fin

EXERCICE 6 Une compagnie d’assurance automobile classe ses clients dans 4 catégories selon des critères : - Jeune : le client est titulaire du permis depuis moins de 2 ans. - Adulte : il est titulaire du permis depuis plus de 2 ans. - As du volant : il est titulaire du permis depuis plus de 2 ans et il n’a jamais eu d’accident durant les 5 dernières

années. - Roulant peu : il est titulaire du permis depuis plus de 2 ans et il roule moins de 5 000 km par an.

Algo Exercice 6 Const cat1 = "jeune" cat2 = "adulte" cat3 = "as du volant" cat4 = "roulant peu" Var catégorie : chaîne âge, nb_an_permis, nb_accidents : entiers nb_km : réel Début Saisir "Nombre années du permis ? ",nb_an_permis Si nb_an_permis <= 2 Alors catégorie cat1 Sinon Saisir "Nombre d'accidents durant 5 dernières années ? ",nb_accidents Si nb_accidents = 0 Alors catégorie cat3 Sinon Saisir "Nombre de km par an ? ",nb_km Si nb_km < 5000 Alors catégorie cat4 Sinon catégorie cat2 Fin si Fin si Fin si Afficher "Vous êtes dans la catégorie ",catégorie Fin

Page 21: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

21

EXERCICE 7 Chaque mois les représentants perçoivent une prime (mtprime), composée d’une commission susceptible de faire l’objet d’une majoration, liée au montant du chiffre d’affaires du mois écoulé (camois) et à sa progression par rapport au mois antérieur (camoisp). Les règles appliquées pour le calcul sont les suivantes : - Lorsque le chiffre d’affaires du mois est < à 200 000 €, il n’y a pas de prime. - Lorsque le chiffre d’affaires du mois est <= à 300 000 €, seule la tranche supérieure à 100 000 € est rétribuée, le taux

de commission est alors de 2 pour mille. - Si le chiffre d’affaires du mois est > à 300 000 €, le calcul précédent s’applique jusqu’à 300 000 €, et la tranche

dépassant 300 000 € est commissionnée à 4 pour mille. - Lorsque la prime est accordée, elle est majorée de 2 000 € (major) si la progression du chiffre d’affaires par rapport

au mois précédent est au moins de 10 %, sauf en septembre, mois pour lequel il n’y a pas de commission. - Dans tous les cas, la prime (commission + majoration) est limitée à 12 000 €. Créez l’algorithme permettant d’afficher le montant de la prime mensuelle d’un représentant.

Algo Exercice 7 Var camois, camoisp, mtprime : réels mois : entier Début Afficher "Entrez le n° du mois : " Saisir mois Saisir camoisp, camois Si camois < 2000000 Alors mtprime 0 Sinon Si camois <= 300000 Alors mtprime (camois-100000)*0.002 Sinon mtprime (camois-100000)*0.002 + (camois-300000)*0.004 Fin si Si mois <> 9 Alors Si camois >= camoisp*1.1 Alors mtprime mtprime + 2000 Fin si Fin si Si mtprime > 12000 Alors mtprime 12000 Fin si Fin si Afficher mtprime Fin

Page 22: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

22

7. LA STRUCTURE REPETITIVE La structure répétitive permet de répéter un ensemble d’instructions jusqu’à ce qu’une des conditions soit réalisée. 7.1 LA STRUCTURE REPETITIVE TANT QUE … FIN TANT QUE Syntaxe Tant que <expression logique> faire <instructions>

Fin tant que Action • On teste d’abord si <expression logique> est vraie. Dans ce cas, on exécute <instructions> puis on

boucle de nouveau le test de <expression logique>. • Par contre si <expression logique> est fausse, la boucle se termine et le programme poursuit son

exécution après "Fin tant que". Exemple :

Algo Table_Multiplication_De_Dix Var k : entier Début Afficher "Table de multiplication de 10" k 1 Tant que k <= 10 Faire Afficher k, " * 10 = ", k*10 k k + 1 Fin Tant que Fin

Cet algorithme donne les résultats suivants :

1 * 10 = 10 2 * 10 = 20 … 8 * 10 = 80 … 10 * 10 = 100

7.2 LA STRUCTURE REPETITIVE REPETER … JUSQU’A Syntaxe Répéter

<instruction> Jusqu'à <expression logique>

Action 1. Le bloc <instructions> est exécuté. 2. L’ <expression logique> est testée. 3. Dans le cas où elle est égale à faux, on recommence au point 1. 4. Dans le cas où elle est égale à vrai, le programme poursuit son exécution après l’instruction "Jusqu’à".

Exemple :

Algo Table_Multiplication_De_Dix Var k : entier Début Afficher "Table de multiplication de 10" k 1 Répéter Afficher k, " * 10 = ", k*10 k k + 1 Jusqu’à k > 10 Fin

Page 23: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

23

7.3 LA STRUCTURE REPETITIVE POUR … FIN POUR Syntaxe Pour <identificateur> de <expression début> à <expression fin> [pas de <expression pas>] <instruction>

Fin Pour Action • <identificateur> est une variable assimilée à un compteur qui est automatiquement augmenté ou

diminué en fonction de <expression pas>. • Au début, <identificateur> prend la valeur de <expression brut>. • Le bloc d’instructions est exécuté jusqu’à ce que <identificateur> prenne la valeur de <expression fin>. • La valeur <identificateur> évolue de <expression début> jusqu’à <expression fin> en fonction de

<expression pas> qui par défaut est égale à 1. Exemple : Dans cet algorithme, le pas de progression de l’indice k est implicitement de 1.

Algo Table_Multiplication_De_Dix Var k : entier Début Afficher "Table de multiplication de 10" Pour k de 1 à 10 Afficher k, " * 10 = ", k*10 Fin pour Fin

7.4 EXERCICES EXERCICE 1 Lorsque le code catégorie saisi n’est pas correct, le message "Erreur, …" s’affiche ; on redemande à nouveau le code catégorie. Le client est détaillant si le code est 1 ; il est semi-grossiste lorsque le code est 2 ; il est grossiste avec un code égal à 3. Complétez l’algorithme ci-dessous, sachant que l’on désire obtenir la présentation suivante à l’écran :

Code catégorie (1 à 3) ? Erreur, recommencez ! ! ! Code catégorie (1 à 3) ? Le client est un [détaillant | semi-grossiste | grossiste]

Algo Exercice 1 Const libel1 = "détaillant" libel2 = "semi-grossiste" libel3 = "grossiste" Var code_catégorie : entier Début Saisir "Code catégorie (1 à 3) ? ",code_catégorie Tant que code_catégorie < 1 ou code_catégorie > 3 faire Afficher "Erreur, recommencez !!!" Saisir "Code catégorie (1 à 3) ? ",code_catégorie Fin tant que Si code_catégorie = 1 Alors Afficher "Le client est un ",libel1 Sinon Si code_catégorie = 2 Alors Afficher "Le client est un ",libel2 Sinon Afficher "Le client est un ",libel3 Fin si Fin si Fin

Page 24: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

24

EXERCICE 2 Écrivez la portion d’algorithme réalisant la vérification de la saisie à la question "Voulez-vous continuer (O ou N) ?". On répétera la question si la réponse n’est pas "O" ou "N".

Algo Exercice 2 Var réponse : caractère Début Répéter Saisir "Voulez-vous continuer (O ou N) ? ",réponse Jusqu'à réponse = "O" ou réponse = "N" Fin

EXERCICE 3 Écrivez l’algorithme réalisant la saisie d’une série de nombres entiers et donnant à la fin de la saisie la somme de ces nombres ainsi que le nombre de nombres saisis. Un nombre égal à 0 indiquera la fin de la saisie.

Algo Exercice 3 Var n, somme, nb_n : entiers Début somme 0 nb_n 0 Saisir "Nombre ou 0 ? ",n Tant que n <> 0 faire somme somme + n nb_n nb_n + 1 Saisir "Nombre ou 0 ? ",n Fin tant que Afficher "Somme des nombres =",somme Afficher "Nombre de nombres saisis =",nb_n Fin

EXERCICE 4 Écrivez l’algorithme réalisant la saisie d’une série de nombres entiers et donnant à la fin de la saisie la somme de ces nombres ainsi que le nombre de nombres saisis. On demandera après chaque saisie si l’on veut "Continuer (O/N) ?".

Algo Exercice 4 Var n, somme, nb_n : entiers continuer : caractère Début somme 0 nb_n 0 Répéter Saisir "Nombre ? ",n somme somme + n nb_n nb_n + 1 Saisir "Continuer (O/N) ? ",continuer Jusqu'à continuer = "N" Afficher "Somme des nombres =",somme Afficher "Nombre de nombres saisis =",nb_n Fin

EXERCICE 5 L’entreprise VENTOUT réalise toutes ses ventes par l’intermédiaire de ses représentants. Ils sont payés uniquement à la commission sur le chiffre d’affaire mensuel réalisé (c’est-à-dire le total mensuel des ventes HT hebdomadaires). La commission est de 10 % du total mensuel. On demande pour chaque représentant l’affichage du total mensuel HT réalisé après saisie des ventes hebdomadaires HT et l’affichage du montant de la commission. Modèle d’écran :

Page 25: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

25

Nom du représentant ? …… Ventes HT hebdomadaires ou 0 ? ….. Ventes HT hebdomadaires ou 0 ? ….. Ventes HT hebdomadaires ou 0 ? ….. … Total des ventes HT = 999999.99 Commission = 99999.99 Autre représentant (OUI ou NON) ? …..

Algo Exercice 5 Const taux_comm = 0.10 Var rep_nom, réponse : chaîne rep_ventes,rep_tot,rep_comm : réels Début Répéter Saisir "Nom du représentant ? ",rep_nom rep_tot 0 Saisir "Ventes hebdomadaires ou 0 ? ",rep_ventes Tant que rep_ventes <> 0 faire rep_tot rep_tot + rep_ventes saisir "Ventes hebdomadaires ou 0 ? ",rep_ventes Fin tant que rep_comm rep_tot * taux_comm Afficher "Total des ventes hors taxes = ",rep_tot Afficher "Commission = ",rep_comm Répéter Saisir "Autre représentant (OUI ou NON) ? ",réponse Jusqu'à réponse = "OUI" ou réponse = "NON" Jusqu'à réponse = "NON" Fin

EXERCICE 6 Saisissez une suite de 20 nombres. Après chaque saisie d’un couple de nombres (A et B), affichez leur produit selon le modèle suivant : Le produit de [valeur de A] par [valeur de B] est égal à [valeur de A x B]

Algo Exercice 6 Var a, b, produit : réels i : entier Début Pour i 1 à 20 Saisir "Valeur de A ? ",a Saisir "Valeur de B ? ",b produit a * b afficher "le produit de ",a," par ",b," est égal à ",produit Fin pour Fin

EXERCICE 7 Un grand magasin est divisé en rayons dans chacun desquels il y a plusieurs catégories de produits. Pour chaque catégorie, il y a plusieurs produits. On applique sur le montant HT de ces produits 2 taux de TVA différents (taux A ou B).

Page 26: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

26

Écrivez l’algorithme permettant d’obtenir l’état ci-dessous à partir de l’écran de saisie suivant : Écran de saisie

Date de saisie (jj/mm/aaaa) ? Numéro du rayon ? Code catégorie ou 0 ? Référence du produit ? Quantité en stock ? Prix unitaire ? Code tva (A ou B) ? Autre produits (O/N) ? Autre rayon (O/N) ?

Etat récapitulatif des stocks au 99/99/9999 Rayons Catégories Produits Quantité Prix unit. Total HT au

taux A Total HT au taux B

…………….. ……..……... ..…………... ……..……... ..…………... ..…………... ………….…. …………….. …………….. …………….. …………….. …………….. …………….. …………….. Total Catégorie …………….. …………….. ………….…. …..………... ……..……... …..………... …..………... ………….…. …………..... …………….. …………….. …………….. …………….. …………….. …………….. …………….. Total Catégorie ………….…. ………..…... Total Rayon ………….…. ……..……... ………….…. ..…………... ………..…... ..…………... ……..……... ………….…. …..………... …………….. …………….. …………….. …………….. …………….. …………….. …………….. Total Catégorie ………….…. ..…………... ..…………... ..…………... ..…………... ..…………... ..…………... ..…………... ..…………... …………….. …………….. …………….. …………….. …………….. …………….. …………….. Total Catégorie ..…………... ..…………... Total Rayon ..…………... ..…………... Total Magasin ..…………... ..…………...

Algo Exercice 7 Var date_état : chaîne(10) num_rayon, code_cat : entiers quantité : décimal(4,0) réf_produit : chaine(8) puht : décimal(2,2) total_ht : décimal(5,2) tot_magasin_a, tot_magasin_b : décimal(7,2) tot_rayon_a, tot_rayon_b : décimal(7,2) tot_catégorie_a, tot_catégorie_b : décimal(7,2) code_tva, autre_produit, autre_rayon : caractères Début tot_magasin_a 0 ; tot_magasin_b 0 Saisir "Date de saisie (jj/mm/aaaa) ? ",date_état Imprimer Tab(19),"ETAT RECAPITULATIF DES STOCKS AU ",date_état Imprimer Imprimer "Rayons Catégories Produits Quantité Prix unit." Imprimer " Total H.T. Total H.T." Imprimer Tab(54),"au taux A au taux B" Répéter tot_rayon_a 0 ; tot_rayon_b 0 Saisir "Numéro du rayon ? ",num_rayon Imprimer " ",num_rayon & Saisir "Code catégorie ou 0 ? ",code_cat Tant que code_cat <> 0 faire tot_catégorie_a 0 ; tot_catégorie_b 0 Imprimer Tab(12),code_cat & Répéter Saisir "Référence du produit ? ",réf_produit Saisir "Quantité ? ",quantité Saisir "Prix unitaire HT ? ",puht total_ht quantité * puht Imprimer Tab(21), réf_produit, Tab(33), quantité, Tab(41),puht Répéter

Page 27: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

27

Saisir "Code tva (A ou B) ? ",code_tva Jusqu'à code_tva= "A" ou code_tva= "B" Si code_tva = "A" Alors Imprimer Tab(52),total_ht tot_catégorie_a tot_catégorie_a + total_ht Sinon Imprimer Tab(64),total_ht tot_catégorie_b tot_catégorie_b + total_ht Fin si Répéter Saisir "Autre produit (O/N) ? ",autre_produit Jusqu'à autre_produit = "O" ou autre_produit = "N" Jusqu'à autre_produit = "N" Imprimer Tab(35),"TOTAL CATEGORIE" & Imprimer Tab(50),tot_catégorie_a ,Tab(62),tot_catégorie_b tot_rayon_a tot_rayon_a + tot_catégorie_a tot_rayon_b tot_rayon_b + tot_catégorie_b Saisir "Code catégorie ou 0 ? ",code_cat Fin tant que Imprimer Tab(35),"TOTAL RAYON" Imprimer Tab(50), tot_rayon_a, tab(62),tot_rayon_b tot_magasin_a tot_magasin_a + tot_rayon_a tot_magasin_b tot_magasin_b + tot_rayon_b Répéter Saisir "Autre rayon (O/N) ? ",autre_rayon Jusqu'à autre_rayon = "O" ou autre_rayon = "N" Jusqu'à autre_rayon = "N" Imprimer Tab(35),"TOTAL MAGASIN" Imprimer Tab(50), tot_magasin_a, Tab(62),tot_magasin_b Fin

Page 28: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

28

8. TABLEAUX A UNE DIMENSION 8.1 DEFINITION Un tableau est une structure de données ayant une dimension et un type déterminés, qui permet de stocker en mémoire plusieurs valeurs de même type. Ces valeurs sont appelées éléments du tableau. Chacun de ces éléments est repéré par un indice indiquant sa position relative par rapport au début du tableau. Un tableau est dit à une dimension lorsqu’un seul indice suffit à adresser les éléments du tableau. L’utilisation des éléments d’un tableau ne peut se faire qu’élément par élément. L’accès à un élément peut se faire par une représentation logique. 8.2 REPRESENTATION LOGIQUE Tableau T de type entier. Dimension = n

882 288 82 … 896 86 8 1 2 3 … n-2 n-1 N

Le 1e élément du tableau est noté T[1] Le 2e élément du tableau est noté T[2] … Le n-1e élément du tableau est noté T[n-1] Le ne élément du tableau est noté T[n] 8.3 SYNTAXE DECLARATIVE D’UN TABLEAU

<identificateur> [<dimension>] : [tableau de ] <type> où <dimension> est égal à un nombre entier <type> indique le type de données stocké dans le tableau (entier ,réel ,caractère, booléen...)

La dimension doit être connue à l’avance. Le tableau peut ne pas être entièrement rempli ,mais il ne peut en aucun cas contenir plus d’éléments que le nombre déterminé lors de la déclaration. L’indice d’un tableau de dimension n est un entier déclaré indépendamment qui varie de 1 à n. Exemples : NomEleves[32] : tableau de chaîne représente un tableau de type chaîne de caractères permettant de stocker les 32 noms des étudiants de la classe. Moyenne[11] : tableau de réel représente un tableau de type réel permettant de stocker 11 moyennes. Dans la déclaration facultative d’un tableau, l’expression tableau est facultative. 8.4 ACCES AUX ELEMENTS D’UN TABLEAU A UNE DIMENSION L’accès à l’élément d’un tableau s’effectue : - en utilisant directement la position relative de l’élément par rapport au début du tableau, - en utilisant un indice. Exemples : T[8] pour accéder au 8e élément du tableau. T[k] pour accéder au ke élément du tableau (la variable k doit contenir une valeur significative). Un élément d’un tableau est considéré comme une variable à part entière et peut par conséquent être utilisé lors des instructions d’entrée-sortie, d’affectation, mais aussi dans toutes les expressions numériques, conditionnelles,…

Page 29: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

29

Exemple : Saisie de notes et calcul de la moyenne

Algo Moyenne Var Somme, Moyenne, TNotes[100] : réels NombreNotes, Compteur : entier Début Saisir "Entrer le nombre de notes à saisir (<100) ", NombreNotes Somme 0 Pour Compteur de 1 à NombreNotes Saisir "Entrer un nombre : ", TNotes[Compteur] Somme Somme + TNotes[Compteur] Fin Pour Moyenne Somme / NombreNotes Afficher "Voici l’ensemble des notes de l’élève " Pour Compteur de 1 à NombreNotes Afficher "La ", Compteur, "e note est : ", TNotes[Compteur] Fin Pour Afficher "La somme est de ", Somme, "la moyenne est de ", Moyenne Fin

8.5 EXERCICES EXERCICE 1 L’algorithme sera composé de 2 parties : - Saisie de 10 nombres réels - Affichage du plus petit nombre, du plus grand nombre, de la somme et de la moyenne de ces nombres.

Algo Exercice 1 Var x[10] : tableau de réels i : entier petit, grand, somme, moyenne : réels Début Pour i 1 à 10 Saisir "Valeur du nombre ? ",x[i] Fin pour petit x[1] grand x[1] somme 0 pour i 1 à 10 Si x[i] < petit Alors petit x[i] Fin si Si x[i] > grand Alors grand x[i] Fin si somme somme + x[i] Fin pour moyenne somme / 10 Afficher "plus petit = ",petit Afficher "plus grand = ",grand Afficher "somme des nombres = ",somme Afficher "moyenne des nombres = ",moyenne Fin

Page 30: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

30

EXERCICE 2 Initialisez un tableau à une dimension des 12 mois de l’année, puis affichez le libellé du mois correspondant au nombre saisi (vérifiez s’il est compris entre 1 et 12).

Algo Exercice 2 Var mois_clair[12] : tableau de chaînes mois : entier Début mois_clair[1] "janvier" mois_clair[2] "février" mois_clair[3] "mars" mois_clair[4] "avril" mois_clair[5] "mai" mois_clair[6] "juin" mois_clair[7] "juillet" mois_clair[8] "août" mois_clair[9] "septembre" mois_clair[10] "octobre" mois_clair[11] "novembre" mois_clair[12] "décembre" Répéter Saisir "n° du mois (1 à 12) ? ",mois Jusqu'à mois >= 1 et mois <= 12 Afficher "le mois en clair est ",mois_clair[mois] Fin

EXERCICE 3 Soit 2 tableaux T1 et T2 de 10 nombres réels chacun. Écrivez l’algorithme réalisant la saisie des 10 nombres dans un tableau T1, puis la copie des nombres positifs non nuls dans le deuxième tableau T2. Le tableau T2 sera éventuellement complété par des zéros. Exemple :

1 2 3 4 5 6 7 8 9 10 T1 -3 25 0 45.2 -5 20.6 10 0 -7 -22 T2 25 45.2 20.6 10 0 0 0 0 0 0

Algo Exercice 3 Solution 1 Var t1[10], t2[10] : tableaux de réels i, j : entiers Début Pour i 1 à 10 Saisir "Valeur de t1 ? ",t1[i] Fin pour Pour i 1 à 10 t2[i] 0 Fin pour j 1 Pour i 1 à 10 Si t1[i] > 0 Alors t2[j] t1[i] j j + 1 Fin si Fin pour Partie non demandée efface_écran Pour i 1 à 10 Afficher t2[i] Fin pour Fin

Page 31: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

31

Algo Exercice 3 Solution 2 Var t1[10], t2[10] : tableaux de réels i, j : entiers Début Pour i 1 à 10 saisir "Valeur de t1 ? ",t1[i] Fin pour j 1 Pour i 1 à 10 si t1[i] > 0 Alors t2[j] t1[i] j j + 1 Fin si Fin pour Pour i j à 10 t2[i] 0 Fin pour Partie non demandée efface_écran Pour i 1 à 10 Afficher t2[i] Fin pour Fin

EXERCICE 4 Écrivez l’algorithme de la saisie d’une date, de sa vérification et de l’affichage de celle-ci en clair. Les noms des mois seront mémorisés dans un tableau à une dimension de 12 éléments. Exemples : 33/01/1996 erreur 29/02/1995 erreur 10/09/1997 10 septembre 1997

Algo Exercice 4 Var jour, mois, année, an_bissextile : entiers date_erronée : booléen mois_clair[12] : tableau de chaînes Début Initialisation des mois mois_clair[1] "janvier" mois_clair[2] "février" mois_clair[3] "mars" mois_clair[4] "avril" mois_clair[5] "mai" mois_clair[6] "juin" mois_clair[7] "juillet" mois_clair[8] "août" mois_clair[9] "septembre" mois_clair[10] "octobre" mois_clair[11] "novembre" mois_clair[12] "décembre" Saisies Répéter Saisir "jour (1 à 31) ? ",jour Jusqu'à jour >= 1 et jour <= 31 Répéter Saisir "n° du mois (1 à 12) ? ",mois Jusqu'à mois >= 1 et mois <= 12 Saisir "année ? ",année Vérification de la date date_erronée .faux. Si mois = 4 ou mois = 6 ou mois = 9 ou mois = 11

Page 32: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

32

Alors Si jour > 30 Alors date_erronée .vrai. Fin si Sinon Si mois = 2 Alors Si jour > 29 Alors date_erronée .vrai. Sinon an_bissextile année mod 4 Si an_bissextile <> 0 Alors Si jour = 29 Alors date_erronée .vrai. Fin si Fin si Fin si Fin si Fin si Affichage du résultat Si date_erronée Alors Afficher "erreur" Sinon Afficher jour," ",mois_clair[mois],année Fin si Fin

EXERCICE 5 Écrivez l’algorithme réalisant la saisie de 20 nombres entiers et l’affichage du nombre de 0 (zéros) saisis.

Algo Exercice 5 Var n[20] : tableau d'entiers i, nb_0 : entiers Début Saisie des 20 nombres Pour i 1 à 5 Saisir "nombre ? ",n[i] Fin pour Calcul du nombre de 0 nb_0 0 pour i 1 à 5 si n[i] = 0 Alors nb_0 nb_0 + 1 Fin si Fin pour Résultat Afficher "le nombre de zéros est de ",nb_0 Fin

EXERCICE 6 Soit un tableau a une dimension contenant le taux de 3 monnaies étrangères. Écrivez l’algorithme permettant de convertir un montant en euros en une monnaie étrangère dont on connaît le code (1, 2, 3). La conversion de la saisie du code est demandée. Pour convertir un montant en euros en une monnaie étrangère, il suffit de multiplier ce montant par le taux correspondant. Modèle d’écran Valeurs des taux dans le tableau (exemple) Montant en euros ou 0 ? 1 0.2959 Code du pays (1 ou 2 ou 3) ? 2 1.8728 Le montant converti est égal à : 3 1.1598 Montant en euros ou 0 ?

ALGO Exercice 6 VAR taux_convertion[3] : tableau de réels

Page 33: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

33

code_pays : entier montant_e, devises : réels DEBUT Initialisation taux_convertion[1] 0.2959 taux_convertion[2] 1.8728 taux_convertion[3] 1.1598 Traitement SAISIR "Montant en euros ou 0 ? ", montant_e TANT QUE montant_e <> 0 FAIRE Saisie du code du pays RÉPÉTER SAISIR "Code du pays (1 ou 2 ou 3) ? ", code_pays JUSQU'A code_pays >= 1 et code_pays <= 3 Calcul devises montant_e * taux_convertion[code_pays] Affichage du résultat AFFICHER "Le montant en devises est de ", devises SAISIR "Montant en euros ou 0 ? ", montant_e FIN TANT QUE FIN

EXERCICE 7 Soit un tableau a une dimension contenant le code de la monnaie du pays et son taux de change en Euro. Écrivez l’algorithme permettant de convertir un montant en une devise donnée (on saisira le code de la devise) en Euro. Modèle d’écran Valeurs des taux dans le tableau (exemple) Montant ou 0 ? 1 F 0.15385 Code devise ? 2 DM 0.5077 Le montant en Euro est égal à : 3 FS 0.6154 Montant ou 0 ?

ALGO Exercice 7 VAR t_devise[3] : tableau de chaînes taux_convertion[3] : tableau de réels code_devise : chaîne montant_f, euro, taux : réels i : entier DEBUT Initialisation t_devise[1] "F" t_devise[2] "DM" t_devise[3] "FS" taux_convertion[1] 0.15385 taux_convertion[2] 0.5077 taux_convertion[3] 0.6154 Traitement SAISIR "Montant ou 0 ? ", montant_f TANT QUE montant_f <> 0 FAIRE Saisie du code du pays RÉPÉTER SAISIR "Code devise (F ou DM ou FS) ? ", code_devise JUSQU'A code_devise ="F" ou code_devise ="DM" ou code_devise = "FS" Calcul euro 0 i 1 TANT QUE euro = 0 FAIRE SI code_devise = t_devise[i] ALORS euro montant_f * taux_convertion[i] FIN SI i i + 1 FIN TANT QUE Affichage du résultat AFFICHER "Le montant en Euro est égal à :", euro SAISIR "Montant ou 0 ? ", montant_f

Page 34: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

34

FIN TANT QUE FIN

EXERCICE 8 Ecrivez l’algorithme permettant de saisir des nombres dans un tableau à 2 dimensions (12 lignes et 5 colonnes), puis afficher le contenu de ce tableau dans le sens colonne/ligne selon le modèle suivant : colonne 1 ligne 1 contenu = …. … colonne 1 ligne 12 contenu = …. colonne 2 ligne 1 contenu = …. … colonne 2 ligne 12 contenu = …. … colonne 5 ligne 12 contenu = ….

Algo Exercice 8 Var n[12,5] : tableau de réels lig, col : entiers Début Pour lig 1 à 12 Pour col 1 à 5 saisir "nombre ? ",n[lig,col] Fin pour Fin pour Pour col 1 à 5 pour lig 1 à 12 Afficher "colonne",col," lig",lig,tab(20),"contenu = " Afficher n[lig,col] Fin pour Fin pour Fin

Page 35: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

35

9. LES FONCTIONS STANDARDS 9.1 LA NOTION DE FONCTION Imaginons que vous souhaitiez calculer la racine carrée d’un nombre et l’afficher. Deux possibilités s'offrent à vous : • Ecrire le programme permettant de calculer une racine carrée (solution qui peut s’avérer fastidieuse, voire impossible

lorsque l’on n’en maîtrise pas l’algorithme). • Appeler un programme existant (écrit par quelqu’un d’autre) auquel vous soumettez le nombre dont vous voulez

extraire la racine carrée. Un tel programme est appelé fonction. On peut considérer une fonction comme un nouvel opérateur du langage qui permet d’obtenir un résultat. La notion de fonction permet ainsi de ne pas avoir à réinventez le fil à couper le beurre ! 9.2 UTILISATION D’UNE FONCTION Toute utilisation de fonction nécessite deux spécifications : - le nom de la fonction, - le ou les paramètres. Dans notre exemple de calcul de racine carrée, le nom de la fonction peut être RacineCarrée et le paramètre le nombre dont on veut extraire la racine carrée. Ainsi l’instruction B RacineCarrée(A) permet d’affecter à la variable B la racine carrée de la variable A (considéré ici comme paramètre de la fonction). Les fonctions peuvent être utilisées dans des expressions numériques ou logiques. Exemple : Algorithme de calcul du périmètre d’un triangle rectangle.

Algo Rectangle Var A,B, Hypoténuse, Périmètre: réel Début Saisir "Veuillez indiquer la longueur du 1° coté ", A Saisir "Veuillez indiquer la longueur du 2° coté ", B Hypoténuse RacineCarrée(A^2 + B^2) Périmètre A + B + Hypoténuse Afficher "Le périmètre est égal à ", Périmètre Fin

9.3 NOTION DE FONCTION STANDARD Une fonction standard est une fonction de base offerte par le langage utilisé (langage algorithmique ou de programmation). Le nombre de fonctions standards ainsi que leurs spécifications sont fonction du langage utilisé. Quelques exemples de fonctions standards : La variable Var1 contient la valeur ‘Bonjour’ Fonction Signification Exemples Valeur de var 2 Majuscule (chaîne) Converti une chaîne de caractères en majuscules Var2 majuscule(var1) BONJOUR Minuscule (chaîne) Converti une chaîne de caractères en minuscules Var2 minuscule(var1) bonjour Droite (chaîne, n) Extrait d’une chaîne de caractères les n caractères

à droite Var2 droite(var1,4) jour

Gauche (chaîne, n) Extrait d’une chaîne de caractères les n caractères à gauche

Var2 gauche(var1,4) Bonj

Milieu (chaîne, n, m) Extrait d’une chaîne de caractères les n caractères à partir du mème caractère

Var2 milieu(var1,4,2) jo

Longueur (chaîne) Retourne la longueur d’une chaîne de caractères Var2 longueur(var1) 8 Ainsi(numérique) Retourne le caractère Ascii relatif au numéro

indiqué Var2 ainsi(65) A

DateSyst() Renvoie la date du jour Var2 datesyst() 8-novembre-1998 Les fonctions peuvent être imbriquées. Ainsi l’instruction : Majuscule(Milieu(DateSyst(),4,3)) retourne la valeur OVE.

Page 36: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

36

Table des codes ASCII D Code D Code D Code D Code D Code D Code 33 ! 49 1 65 A 81 Q 97 a 113 q 34 " 50 2 66 B 82 R 98 b 114 r 35 # 51 3 67 C 83 S 99 c 115 s 36 $ 52 4 68 D 84 T 100 d 116 t 37 % 53 5 69 E 85 U 101 e 117 u 38 & 54 6 70 F 86 V 102 f 118 v 39 ‘ 55 7 71 G 87 W 103 g 119 w 40 ( 56 8 72 H 88 X 104 h 120 x 41 ) 57 9 73 I 89 Y 105 i 121 y 42 * 58 : 74 J 90 Z 106 j 122 z 43 + 59 ; 75 K 91 [ 107 k 123 { 44 ’ 60 < 76 L 92 \ 108 l 124 | 45 - 61 = 77 M 93 ] 109 m 125 } 46 . 62 > 78 N 94 ^ 110 n 126 ~ 47 / 63 ? 79 O 95 _ 111 o 48 0 64 @ 80 P 96 ‘ 112 p

D Code Signification D Code Signification 0 NUL Caractère nul 17 DC1 Commande de terminal 1 SOH Début d’en-tête 18 DC2 Commande de terminal 2 STX Début de texte 19 DC3 Commande de terminal 3 ETX Fin de texte 20 DC4 Commande de terminal 4 EOT Fin de transmission 21 NAK Mauvaise réception 5 ACK Accusé de réception 22 SYN Synchronisation 6 ENQ Demande de réponse 23 ETB Fin bloc de données 7 BEL Sonnerie 24 CAN Annuler donnée précédente 8 BS Retour arrière 25 EM Fin du support 9 HT Tabulation horizontale 26 SUB Remplacement 10 LF Début de ligne 27 ESC Annonce d’une commande 11 VT Tabulation verticale 28 FS Séparateur de pages 12 FF Nouvelle page 29 GS Séparateur de blocs 13 CR Retour chariot 30 RS Séparateur de sous-blocs 14 SO Suite non standard 31 US Séparateur de données 15 SI Suite en code ASCII 32 SP Espace 16 DLE Annonce commandes 127 DEL Effacer dernier caractère

Page 37: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

37

9.4 EXERCICES EXERCICE 1 Complétez le tableau ci-dessous sachant que la valeur de la variable var1 est "abcdefghijklmnopqrstuvwxyz" au départ. Instructions Valeur du résultat Type du résultat var2 majuscule(var1) var3 minuscule(droite(var2,4)) var4 gauche(var2,3) var5 milieu(var2,6,5) var6 milieu(droite(var2,5),2,3) var7 longueur(var3) var8 ansi(var6) var9 rang(var2,var5,1) var10 car(70) var11 milieu(datesyst(),4,2)

Instructions Valeur du résultat Type du résultat var2 majuscule(var1) ABCDEFG... chaîne var3 minuscule(droite(var2,4)) wxyz chaîne var4 gauche(var2,3) ABC chaîne var5 milieu(var2,6,5) FGHIJ chaîne var6 milieu(droite(var2,5),2,3) WXY chaîne var7 longueur(var3) 4 entier var8 ansi(var6) 87 entier var9 rang(var2,var5,1) 6 entier var10 car(70) F caractère (ou chaîne) var11 milieu(datesyst(),4,2) affiche le mois courant en chiffres par

ex. 06 pour le mois de juin chaîne en effet car datesyst() est de type chaîne et milieu est une fonction de type chaîne

EXERCICE 2 Soit les variables a, b, c (chaînes) et i, j, k (entiers). Donner la (ou les) instructions permettant de réaliser les opérations suivantes : a) afficher la longueur de la variable a b) placer dans b les 4 caractères de gauche de c c) additionner les longueurs de a, b et c (le résultat est k) d) supprimer les 2 caractères de gauche de b (le résultat est a) e) afficher le code ascii du 5e caractère de c f) mettre dans b les 3 caractères de droite de c convertis en minuscule g) afficher le 3e caractère de b autant de fois que la longueur de a a) AFFICHER longueur(a) b) b gauche(c,4) c) k longueur(a) + longueur(b) + longueur(c) d) a suppr(b,1,2) e) AFFICHER ansi(milieu(c,5,1)) f) b droite(minuscule(c),3) g) AFFICHER répète car(longueur(a),ansi(milieu(b,3,1))) EXERCICE 3 Écrivez l’algorithme permettant de garnir un tableau de : a) 6 réels aléatoires compris entre 0 et 1, b) 6 réels aléatoires compris entre 1 et 50, c) 6 entiers aléatoires compris entre 1 et 50, d) 6 entiers aléatoires compris entre 1 et 50 tous différents les uns des autres (le début de la fortune ?).

Page 38: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

38

ALGO Exercice 3a VAR i : entier Tab[6] : tableau de réel DEBUT POUR i 1 A 6 tab[i] alea() FIN POUR FIN

ALGO Exercice 3b VAR i : entier tab[6] : tableau de réel DEBUT POUR i 1 A 6 REPETER tab[i] alea() * 100 JUSQU'A tab[i] >= 1 et tab[i] <= 50 FIN POUR FIN ALGO Exercice 3c VAR i : entier tab[6] : tableau d'entier DEBUT POUR i 1 A 6 REPETER tab[i] entier(alea() * 100) JUSQU'A tab[i] >= 1 et tab[i] <= 50 FIN POUR FIN

ALGO Exercice 3d solution 1 VAR i, j : entier tab[6] : tableau d'entier doublon : booléen DEBUT POUR i 1 A 6 REPETER doublon .FAUX. REPETER tab[i] entier(alea() * 100) JUSQU'A tab[i] >= 1 et tab[i] <= 50 POUR j 1 A i - 1 SI tab[i] = tab[j] ALORS doublon .VRAI. j i - 1 FINSI FIN POUR JUSQU'A doublon = .FAUX. FIN POUR FIN

Page 39: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

39

ALGO Exercice 3d Solution 2 VAR i, j : entier tabl[6] : tableau d'entier doublon : booléen DEBUT POUR i 1 A 6 REPETER doublon .FAUX. REPETER tab[i] entier(alea() * 100) JUSQU'A tab[i] >= 1 et tab[i] <= 50 j 1 TANT QUE doublon = .FAUX. et j <= i - 1 FAIRE SI tabl[i] = tabl[j] ALORS doublon .VRAI. FIN SI j j + 1 FIN TANT QUE JUSQU'A doublon = .FAUX. FIN POUR FIN

EXERCICE 4 Écrivez l’algorithme qui permet de convertir un nombre entier compris entre 1 et 2000 en chiffres romains. On rappelle : • la tranche des 1000 est notée M • 500 est noté D • 50 est noté C (*) • 10 est noté X (*) • 5 est noté V • 1 est noté I (*) (*) répété autant de fois qu’il y a de centaines, de dizaines ou d’unités. Exemples : 9 ⇒ VIIII 1900 ⇒ MDCCCC Remarque : cette notation est simplifiée car dans la réalité 9 sera noté IX et 1900 sera noté MCM.

ALGO Exercice 4 VAR nombre, reste : entiers nombre_romain : chaîne cinquaine : entier milliers, cinqcentaine, centaines, cinquantaine, dizaines : entiers DEBUT REPETER Saisir "Nombre compris entre 1 et 2000 ? ",nombre JUSQU'A nombre >= 1 et nombre <= 2000 reste nombre nombre_romain "" milliers reste Div 1000 SI milliers <> 0 ALORS nombre_romain répète car(milliers, ansi("M")) reste reste - milliers * 1000 FIN SI SI reste >= 900 ALORS nombre_romain nombre_romain + "CM" reste reste - 900 SINON cinqcentaine reste Div 500

Page 40: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

40

SI cinqcentaine <> 0 ALORS nombre_romain nombre_romain + "D" reste reste - 500 FIN SI FIN SI centaines reste Div 100 SI centaines <> 0 ALORS nombre_romain nombre_romain + répète car(centaines,ansi("C")) reste reste - centaines * 100 FIN SI cinquantaine reste Div 50 SI cinquantaine <> 0 ALORS nombre_romain nombre_romain + "L" reste reste - 50 FINSI dizaines reste Div 10 SI dizaines <> 0 ALORS nombre_romain nombre_romain + répètecar(dizaines,ansi("X")) reste reste - dizaines * 10 FIN SI SI reste = 9 ALORS nombre_romain nombre_romain + "IX" SINON cinquaine reste Div 5 SI cinquaine <> 0 ALORS nombre_romain nombre_romain + "V" reste reste - 5 FINSI SI reste <> 0 ALORS nombre_romain nombre_romain + répètecar(reste,ansi("I")) FIN SI FINSI AFFICHER "Le nombre",nombre," est écrit ",nombre_romain AFFICHER " par les Romains" FIN

Page 41: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

41

10. LES FONCTIONS ET PROCEDURES UTILISATEURS 10.1 NOTION DE FONCTION UTILISATEUR Quelque soit le langage de programmation que vous utilisiez, tôt ou tard le manque d’une fonction qui vous est indispensable risque de se faire sentir. il ne vous restera plus alors qu’à développer la fonction manquante Ce Cette fonction que vous développerez à partir des instructions de base du langage s’appellera « fonction utilisateur ». 10.2 DECLARATION D’UNE FONCTION UTILISATEUR Une fonction utilisateur s’utilise comme une fonction standard ; toutefois, avant de pouvoir l’utiliser, il est indispensable d’en spécifier le détail. Ecrivons l’algorithme permettant de calculer le nombre de combinaisons de P éléments pris parmi N éléments sachant que ce nombre est déterminé par la formule suivante : N! / (P! * (N-P)!) où ! signifie « factorielle de » La nature même de l’exercice nous incite à utiliser une fonction utilisateur car la fonction Factorielle() n’est pas standard. Nous allons la décrire au début de l’algorithme de la façon suivante :

FONCTION FACTORIELLE (NOMBRE : ENTIER) : ENTIER Var K, Facto : entier DEBUT Facto 1 Pour K de 2 à Nombre Facto Facto * K Fin Pour Délivre (Facto) FIN

La fonction Factorielle() admet en argument un nombre (Nombre) et retourne la valeur calculer (Facto) à l’aide de l’instruction « délivre ». Une fonction utilisateur peut ne pas avoir d’argument ou en avoir plusieurs. Par contre, dans tous les cas, elle doit délivrer un unique résultat qui doit être compatible avec le type de donnée déclaré. 10.3 UTILISATION D’UNE FONCTION UTILISATEUR La fonction Factorielle() ainsi définie retourne une valeur entière pour tout nombre entier communiqué en argument. Nous pouvons maintenant l’utiliser :

Algo Combinaison Var N, P, Combinaison : entier Début Saisir "Veuillez indiquer la valeur de N : ", N Saisir "Veuillez indiquer la valeur de P : ", P Combinaison Factorielle(N) / (Factorielle(P) * Factorielle (N-P)) Afficher "Le nombre de combinaisons de ", N, " par ", P, " est égal à : ", Combinaison Fin

10.4 NOTION DE PROCEDURE UTILISATEUR Une procédure utilisateur représente une séquence d’instructions. On est amené à utiliser une procédure utilisateur lorsque l’on souhaite : • découper de façon harmonieuse un algorithme pour en faciliter la lisibilité et la maintenance, • éviter de répéter plusieurs fois des séquences d’instructions identiques ou quasiment identiques. Contrairement à une fonction, une procédure utilisateur ne retourne jamais de résultat. Toutefois, elle peut admettre des arguments en « entrée » et éventuellement les modifier en « sortie ».

Page 42: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

42

10.5 UTILISATION D’UNE PROCEDURE UTILISATEUR Imaginons d’écrire, à l’aide de procédures, l’algorithme ci-dessous permettant d’ordonner deux nombres saisis au clavier :

Algo OrdonneDeuxnombres Var N1, N2 : réel Début Saisir "Entrer le nombre N1 :",N1 Saisir "Entrer le nombre N2 :",N2 Si N1<N2 Alors Afficher "Le nombre ", N2, " est plus grand que le nombre ", N1 Afficher N1, N2 Sinon Si N2<N1 Alors Afficher "Le nombre ", N1, " est plus grand que le nombre ", N2 Afficher N2, N1 Sinon Afficher "Le nombre ", N1, " est égal au nombre ", N2 Afficher N1, N2 Fin si Fin si Fin

Dans cet exemple, les instructions d’affichage du résultat sont quasiment identiques. Il est alors possible d’écrire l’algorithme de la façon suivante :

Algo OrdonneDeuxnombres Var globales N1,N2 : réel Début Saisir "Entrer le nombre N1 :", N1 Saisir "Entrer le nombre N2 :",N2 Si N1 < N2 Alors AfficheNlN2() Sinon Si N2 < N1 Alors AfficheN2N1() Sinon AfficheEgal() Fin si Fin si Fin Procédure AfficheNlN2() Début Afficher "Le nombre ", N2, "est plus grand que le nombre ", N1 Afficher N1, N2 Fin Procédure AfficheN2N1() Début Afficher "Le nombre ", N1, " est plus grand que le nombre ", N2 Afficher N2, N1 Fin Procédure AfficheEgal() Afficher "Le nombre ", N1, " est égal au nombre ", N2 Afficher N1, N2 Fin

Dans ce nouvel algorithme, la lisibilité de la partie principale de l’algorithme est facilitée par l’appel de trois procédures « utilisateur », chacune traitant un cas particulier. Ces procédures n’admettent aucun paramètre ; par conséquent les variables utilisées sont déclarées globales. Toutefois cet algorithme ne permet pas un véritable gain d’instructions. Pour obtenir un tel résultat, il est préférable d’utiliser dans le cadre de cet exercice, une seule procédure avec des paramètres en entrée :

Page 43: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

43

Algo OrdonneDeuxnombres Var N1, N2 : réel Début Saisir "Entrer le nombre N1 :",N1 Saisir "Entrer le nombre N2 :",N2 Si N 1 < N2 Alors AfficheNombres (N2, " est plus grand que le nombre ",N1) Sinon Si N2 < N 1 Alors AfficheNombres (N1, " est plus grand que le nombre ", N2) Sinon AfficheNombres (N1, "est égal au nombre " ,N2) Fin si Fin si Fin Procédure AfficheNombres (e A : entier, Message : chaîne, B : entier) Début Afficher A, Message, B Afficher A, B Fin

Cette solution, outre une meilleure lisibilité, offre l’avantage de réduire la gestion de l’affichage du résultat à une seule procédure. Si l’affichage devenait plus sophistiqué (gestion de la couleur, effacement de l’écran avant affichage, positionnement du curseur, gestion de sons...) seule la procédure serait modifiée.

10.6 PASSAGE DES PARAMETRES Il est possible de faire précéder les paramètres de la procédure des caractères e, s et es pour indiquer la façon dont ils sont utilisés par la procédure. • Argument en entrée (e) : un argument passé en « entrée » signifie que l’on ne souhaite pas modifier le contenu initial

de la variable transmise. • Argument en sortie (s): un argument passé en « sortie » signifie que l’on attend de la procédure appelée qu’elle

initialise la variable transmise. • Argument en entrée-sortie (es) : un argument passé en « sortie » signifie que l’on attend de la procédure appelée

qu’elle utilise puis qu’elle modifie la variable transmise. 10.7 CONCLUSION SUR L’UTILISATION DES FONCTIONS ET DES PROCEDURES Il est important de bien comprendre que l’usage des fonctions et procédures représente la base de la programmation structurée. Cette façon de faire permet de maîtriser la résolution d’un problème complexe (absent dans cet ouvrage) en l'assimilant à la résolution d'une suite de problèmes plus simples. En résumé, les fonctions et les procédures permettent : • de partager la complexité en abordant un problème d’un niveau général vers un niveau détaillé, • de réutiliser n fois un même module, plutôt que d’écrire n fois les mêmes instructions, • de maintenir plus facilement un programme, puisque la modularité permet de repérer plus facilement tout

dysfonctionnement, • de faire appel à des bibliothèques de modules existants, • de répartir la charge d’un projet de développement conséquent entre plusieurs personnes. La décomposition d’un algorithme est une tâche difficile. Il faut décomposer suffisamment pour réduire la complexité du problème, mais pas trop pour ne pas augmenter la complexité de la solution !

Page 44: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

44

10.8 EXERCICES EXERCICE 1 : CALCUL DE LA MOYENNE DES NOTES Le classement des candidates (à l’élection de Miss Bourgogne) est réalisé à partir des notes attribuces par le jury composé de 10 juges à l’issue de quatre épreuves. Pour éviter que certains juges ne puissent favoriser abusivement ou pénaliser certaines candidates, une méthode spécifique de calcul de la moyenne des notes a été élaborée. Cette méthode est décrite dans l’algorithme de la fonction Miss. Travail à faire : a) Définissez de manière précise le résultat renvoyé par la fonction Miss. b) Fournissez une trace des valeurs prises par les variables lors de l’exécution de la fonction sur les données de la

candidate n° 14 (notes obtenues par cette candidate à l’épreuve « Robe du soir » : 14, 15, 20, 12, 14, 11, 05, 14, 12, 15).

c) Présentez l’algorithme décrivant le calcul de la moyenne des notes obtenues par une candidate à l’ensemble des

quatre épreuves et intégrant l’utilisation de la fonction Miss.

Fonction miss(note) Paramètres d’entrée : note : tableau de 10 numériques (Notes des 10 jurés pour une candidate) Autres variables (variables locales) : maxi : numérique mini : numérique total : numérique i : numérique Valeur délivrée : miss : numérique DESCRIPTION DE LA FONCTION Début mini note[1] maxi note[1] total note[1] Pour i = 2 à 10 Faire Si note[i] < mini Alors mini note[i] Fin si Si note[i] > maxi Alors maxi note[i] Fin si total total + note[i] Fin Pour miss (total - mini - maxi) / 8 Fin

a) Cette fonction retourne la moyenne des notes pour une candidate.

Cette moyenne est obtenue de la manière suivante : miss = total des 10 notes de la candidate - plus basse note attribuée à cette candidate - plus haute note miss est ensuite divisée par 8 (10 - 2 (plus basse et plus haute))

b)

valeurs successives de i Variables Rien 2 3 4 5 6 7 8 9 10 Note[i] Rien 15 20 12 14 11 05 14 12 15 Mini 14 14 14 12 12 11 05 05 05 05 Maxi 14 15 20 20 20 20 20 20 20 20 Total 14 29 49 61 75 86 91 105 117 132

La valeur délivrée miss est égale à : (132 - 05 - 20) / 8 c’est-à-dire 13,375 c)

algo calcul_moyenne_totale var note[10] : tableau de numériques i, j, total : entiers

Page 45: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

45

moyenne : numérique Début total 0 Pour i 1 à 4 pour j 1 à 10 saisir "Note attribuée ? ",note[j] fin pour total total + miss(note) Fin pour moyenne total / 4 afficher "moyenne pour cette candidate = ",moyenne Fin

EXERCICE 2 : FRAIS DE DEPLACEMENT M. Bernard Kanne désire construire un programme permettant de gérer le calcul mensuel des frais de déplacement des représentants. Pour réaliser ce travail, on utilise la table RECAP (annexe 1) constituée en fin de mois à partir d’informations extraites de la base de données, ainsi que la table des représentants. Le montant du remboursement est fonction du nombre total de kilomètres parcourus et de la puissance fiscale du véhicule utilisé. Travail à faire : a) L’algorithme présenté en annexe réalise la fonction FRAIS. Cette fonction FRAIS (nombre1, nombre2) fournit le

montant des indemnités de remboursement en fonction de 2 nombres : le premier correspond à un total de kilomètres parcourus, le deuxième à la puissance fiscal du véhicule exprimée en chevaux.

En utilisant l’algorithme, calculez le montant des indemnités dues aux représentants n° 1, 2 et 3 ; justifiez les calculs.

b) Complétez l’algorithme (annexe 2) qui permet, en utilisant la fonction FRAIS, d’afficher pour chaque représentant son numéro, son nom, le montant mensuel de ses remboursements de frais, ainsi que le total général des remboursements mensuels.

Annexe 1 : Algorithme de la fonction FRAIS La structure de la table RECAP est la suivante : r_nro Numérique Numéro du représentant r_nom Texte Nom du représentant r_cv Numérique Puissance fiscale du véhicule r_totalkm Numérique Nombre total de kilomètres parcourus dans le mois

Voici les extraits de la table RECAP pour le mois de mars 2008 : r_nro r_nom r_cv r_totalkm 1 Albert 15 2250 2 Beaunemine 10 10030 3 Moustache 5 5520

Indemnités kilométriques : Nombre de chevaux 1 à 3 4 5 6 7 8 9 10 11 12 13 et + Moins de 5000 km 1.94 2.33 2.59 2.75 2.86 3.10 3.17 3.34 3.41 3.66 3.73 De 5000 à 10000 km 1.75 2.10 2.33 2.47 2.57 2.79 2.85 3.00 3.07 3.29 3.36 Plus de 10000 km 1.36 1.63 1.81 1.92 2.00 2.17 2.22 2.34 2.39 2.56 2.61

FRAlS(nbkm, nbov) : numérique Entrée : nbkm : numérique nbcv : numérique montant1 : numérique montant2 : numérique montant3 : numérique tarif[l3] : tableau de numériques Début tarif[l]=1,94 tarif[2]=1,94 tarif[3]=1,94 tarif[4]=2,33 tarif[5]=2,59 tarif[6]=2,75

Page 46: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

46

tarif[7]=2,86 tarif[8]=3,10 tarif[9]=3,17 tarif[10]=3,34 tarif[ll]=3,41 tarif[l2]=3,66 tarif[l3]=3,73 Si nbcv > 13 Alors nbcv = 13 Fin Si Si nbkm < 5000 Alors montant1 = nbkm * tarif[nbcv] montant2 = 0 montant3 = 0 Sinon Montant1 = 5000 * tarif[nbcv] Si nbkm <= 10000 Alors montant2 = (nbkm - 5000) * tarif[nbcv] * 0,9 montant3 = 0 Sinon montant2 = 5000 * tarif[nbcv] * 0,9 montant3 = (nbkm - 10000) * tarif[nbcv] * 0,7 Fin Si Fin Si Retourner montant1 + montant2 + montant3 Fin

Annexe 2 :

Algo remboursements Var r_nro, r_cv, r_totalkm, montant, total_général : numériques r_nom : texte Début Ouvrir la table "RECAP" ………………………………………………………………………………………………………………………… Lire r_nro, r_nom, r_cv, r_totalkm Tant que non fin de table Faire ……………………………………………………………………………………………………………………. ……………………………………………………………………………………………………………………. ……………………………………………………………………………………………………………………. Lire r_nro, r_nom, r_cv, r_totalkm Fin Tant que ………………………………………………………………………………………………………………………… Fermer la table "RECAP" Fin

a) Représentant n° 1 (Albert) : r_cv = 15 et r_totalkm = 2250

montant1 = 2250 * 3,73 8392,50 montant2 = 0 0,00 montant3 = 0 0,00 frais = 8392,50

Représentant n° 2 (Beaunemine) : r_cv = 10 et r_totalkm = 10030 montant1 = 5000 * 3,34 16700,00 montant2 = 5000 * 3,34 * 0,9 15030,00 montant3 = 30 * 3,34 * 0,7 70,14 frais = 31800,14

Représentant n° 3 (Moustache) : r_cv = 5 et r_totalkm = 5520 montant1 = 5000 * 2,59 12950,00 montant2 = 520 * 2,59 * 0,9 1212,12

Page 47: PROGRAMMATION ALGORITHMIQUE 1. PRESENTATION 1.1 …tony3d3.free.fr/files/Programmation-algorithmique.pdf · Pour établir une facture simple, il suffit de compléter l’entête avec

47

montant3 = 0 0,00 frais = 14162,12

b) Algo remboursements Var r_nro, r_cv, r_totalkm, montant, total_général : numériques r_nom : texte Début Ouvrir la table "RECAP" total_général 0 Lire r_nro, r_nom, r_cv, r_totalkm Tant que non fin de table Faire montant frais(r_cv,r_totalkm) total_général total_général + montant afficher r_nro, r_nom, montant Lire r_nro, r_nom, r_cv, r_totalkm Fin Tant que afficher total_général Fermer la table "RECAP" Fin