1 / 13 Les algorithmes Un algorithme est une suite ordonnée d’instructions ou d’opérations dont l’application permet de résoudre un problème ou d’obtenir un résultat. A l’origine, les algorithmes sont des outils utilisés pour résoudre des problèmes de mathématiques (ce sont des méthodes de calcul et de résolution d’équations). En informatique, les algorithmes sont utilisés pour concevoir des programmes pour les ordinateurs. Un programme informatique (un logiciel ou une fonction d’un logiciel) permet à l’ordinateur de traiter des données afin d’obtenir le résultat souhaité. Les algorithmes décrivent les traitements à effectuer par l’ordinateur. Ils constituent une étape préalable de réflexion avant l’écriture d’un programme dans un langage informatique de programmation (par un informaticien). I- La structure générale d’un algorithme Un algorithme n’est pas un langage informatique, il n’y a pas de règles strictes lors de la rédaction d’un algorithme. Il s’agit toutefois d’un langage structuré avec des mots clés et des règles de présentation communément admises. Un algorithme est généralement constitué de deux parties : la déclaration des variables et le corps de l’algorithme. A) La déclaration (ou définition) des variables (et des constantes) Une variable est une donnée qui peut prendre des valeurs différentes au cours de l’exécution de l’algorithme (exemple : le CA annuel réalisé avec chaque client). On distingue deux catégories de variables : • Les variables d'entrée : ce sont les données de départ, on les fournit au programme pour qu’il puisse exécuter les traitements attendus. Elles sont saisies ou lues dans un fichier existant. • Les variables de sortie : ce sont celles que le programme doit obtenir, calculer, après exécution des traitements sur les données de départ. Pour chaque variable on définit le type de données des valeurs qu’elle peut prendre : numérique (entier ou réel), texte, date, monétaire, type booléen (2 valeurs, par exemple : Vrai / Faux ; Oui / Non) … Un algorithme peut également contenir des constantes : ce sont des données qui ne prennent qu’une seule valeur au cours de l’exécution de l’algorithme (par exemple un taux de remise de 5 % applicable à partir d’un niveau donné de CA). 2 / 13 B) Le corps de l’algorithme Dans cette partie, on définit l’ensemble des opérations (ou instructions) à suivre dans un ordre logique afin d’obtenir le résultat désiré et l’afficher à l’écran. On commence toujours par la saisie des variables de départ (par l’utilisateur du programme) ou leur lecture dans un fichier (le programme ne peut pas s’exécuter à partir de rien !). Puis, on définit les instructions à qui doivent être exécutées ainsi que leur enchaînement. Les instructions peuvent être exécutées dans tous les cas, les unes après les autres (on parle alors d’instructions ou de structures séquentielles) ou seulement si une condition est vérifiée (instructions ou structures conditionnelles ou alternatives). Les instructions peuvent être exécutées une seule fois ou plusieurs fois (instructions ou structures répétitives ou itératives ou « boucles »). Enfin, on affiche les résultats attendus du programme. C) Exemples simples 1) Algorithme qui affiche le résultat de l’addition de 2 nombres entiers Déclaration des variables Nb1 : entier Nb2 : entier Résultat : entier Premier nombre de l’addition Deuxième nombre de l’addition Résultat de l’addition des deux nombres DEBUT SAISIR Nb1 (ou : LIRE Nb1 si le nombre est extrait d’un fichier existant) SAISIR Nb2 Résultat ← Nb1 + Nb2 AFFICHER Résultat FIN La valeur obtenue par l’addition est affectée à la variable Résultat. L’instruction d’affectation est représentée par une flèche « ← » (ou simplement par le signe égal « = »). Cf. Document : « Plusieurs versions d’un même algorithme » 3 / 13 2) Algorithme qui calcule et affiche le montant d’une remise Une entreprise accorde une ristourne de fin d’année de 2 % sur le chiffre d’affaires HT réalisé avec ses clients. Elle souhaite automatiser le calcul de la ristourne. Déclaration des variables et des constantes NomClient : texte (ou chaîne de caractères) CA : réel (ou monétaire) Ristourne : réel (ou monétaire) Taux : réel Nom du client CA annuel réalisé avec le client Montant de la ristourne accordée Pourcentage de la ristourne DEBUT SAISIR NomClient SAISIR CA Taux ← 0,02 Ristourne ← CA × Taux AFFICHER NomClient, Ristourne FIN Ou, plus simplement, en indiquant dans la déclaration des variables : Taux = 2 % DEBUT SAISIR NomClient SAISIR CA Ristourne ← CA × 0,02 AFFICHER NomClient, Ristourne FIN Cet algorithme ne prend pas en compte le fait que le taux de ristourne dépend généralement du niveau du CA (Cf. structures conditionnelles) et il ne précise pas le nombre de fois qu’il doit être exécuté (Cf. structures répétitives). 4 / 13 II- Les structures conditionnelles (ou alternatives) Lorsque le traitement à effectuer est fonction d’une ou plusieurs conditions (conditions qui portent sur les valeurs prisent par les variables), il est nécessaire d’utiliser une instruction conditionnelle : SI … ALORS / SINON Structure alternative simple : SI Condition ALORS Instruction 1 SINON Instruction 2 FIN SI L’instruction 1 est exécutée seulement si la condition est vérifiée (ou vraie). Si la condition n’est pas vérifiée, c’est l’instruction 2 qui est exécutée par l’ordinateur. Structure alternative réduite ou « appauvrie » : SI Condition ALORS Instruction FIN SI L’instruction est exécutée seulement si la condition est vérifiée. Si la condition n’est pas vérifiée, il n’y a aucun traitement à effectuer. Structures alternatives imbriquées : SI Condition 1 ALORS Instruction 1 SINON SI Condition 2 ALORS Instruction 2 SINON Instruction 3 FIN SI FIN SI L’instruction 1 est exécutée si la condition 1 est vérifiée. L’instruction 2 est exécutée si la condition 1 n’est pas vérifiée et si la condition 2 est vérifiée. L’instruction 3 est exécutée seulement si les conditions 1 et 2 ne sont pas vérifiées. SI Condition 1 ALORS SI Condition 2 ALORS Instruction 1 SINON Instruction 2 FIN SI SINON Instruction 3 FIN SI Si conditions 1 et 2 : Vrai Si 1 : Vrai et 2 : Faux Si 1 : Faux Il est possible d’imbriquer un grand nombre d’instructions conditionnelles… 5 / 13 Exemple : Le taux de la ristourne accordée dépend du niveau du CA réalisé avec les clients. Montant du CA annuel Moins de 10 000 € De 10 000 € à moins de 50 000 € A partir de 50 000 € Taux de ristourne Pas de ristourne 2% 5% Algorithme Calcul de la ristourne : Déclaration des variables et des constantes NomClient : texte (ou chaîne de caractères) CA : réel (ou monétaire) Ristourne : réel (ou monétaire) Taux1 = 0 ; Taux2 = 0,02 ; Taux3 = 0,05 Nom du client CA annuel réalisé avec le client Montant de la ristourne accordée Pourcentages de la ristourne DEBUT SAISIR NomClient SAISIR CA SI CA < 10 000 ALORS Ristourne ← 0 SINON SI CA < 50 000 ALORS Ristourne ← CA × 0,02 SINON Ristourne ← CA × 0,05 FIN SI FIN SI AFFICHER NomClient, Ristourne FIN Autre solution, en considérant que le taux est une variable qui prend 3 valeurs : DEBUT SAISIR NomClient SAISIR CA SI CA < 10 000 ALORS Taux ← 0 SINON SI CA < 50 000 ALORS Taux ← 0,02 SINON Taux ← 0,05 FIN SI FIN SI Ristourne ← CA × Taux AFFICHER NomClient, Ristourne FIN 6 / 13 III- Les structures répétitives ou itératives (ou « boucles ») Lorsqu’un traitement nécessite d’être effectué plusieurs fois, il faut utiliser des instructions répétitives : POUR …, REPETER … ou TANT QUE … A) L’instruction POUR Cette instruction s'utilise pour les cas où l'on connaît le nombre de fois que l'on veut répéter les instructions. Elle nécessite de définir une variable de type compteur qui est automatiquement incrémentée de 1. POUR Compteur DE … A ... FAIRE Instruction 1 Instruction 2 … FIN POUR (L’instruction FAIRE peut être omise) Exemple (suite) : Algorithme Calcul de la ristourne Déclaration des variables NomClient : texte (ou chaîne de caractères) CA : réel (ou monétaire) Ristourne : réel (ou monétaire) Taux : réel NbClients : entier Compteur : entier Nom du client CA annuel réalisé avec le client Montant de la ristourne accordée Pourcentage de la ristourne Nombre de clients Compteur du nombre d’exécutions DEBUT SAISIR NbClients POUR Compteur DE 1 A NbClients (FAIRE) SAISIR NomClient SAISIR CA SI CA < 10 000 ALORS Taux ← 0 SINON SI CA < 50 000 ALORS Taux ← 0,02 SINON Taux ← 0,05 FIN SI FIN SI Ristourne ← CA × Taux AFFICHER NomClient, Ristourne FIN POUR FIN 7 / 13 B) L’instruction REPETER Cette instruction s’utilise quand on ne connaît pas par avance le nombre de répétitions du traitement à effectuer. Les instructions (qui suivent l’instruction REPETER) sont répétées jusqu’à ce qu’une condition soit satisfaite (en pratique : jusqu’à ce qu’il n’y ait plus de traitement à effectuer !). REPETER Instruction 1 Instruction 2 … Etat de la condition ? JUSQU’A Condition satisfaite Pas de condition pour démarrer Répétition si la condition n’est pas satisfaite Condition pour arrêter (sortir de la boucle) L’instruction REPETER s’utilise en général avec une variable Réponse de type booléen : Oui (pour relancer le traitement), Non (pour arrêter les répétitions). Exemple (suite) : Algorithme Calcul de la ristourne Déclaration des variables NomClient : texte (ou chaîne de caractères) CA : réel (ou monétaire) Ristourne : réel (ou monétaire) Taux : réel Réponse : texte Nom du client CA annuel réalisé avec le client Montant de la ristourne accordée Pourcentage de la ristourne Oui (pour répéter), Non (pour arrêter) DEBUT REPETER SAISIR NomClient SAISIR CA SI CA < 10 000 ALORS Taux ← 0 SINON SI CA < 50 000 ALORS Taux ← 0,02 SINON Taux ← 0,05 FIN SI FIN SI Ristourne ← CA × Taux AFFICHER NomClient, Ristourne SAISIR « Voulez-vous relancer le programme pour un autre client ? », Réponse JUSQU’A Réponse = « Non » FIN 8 / 13 Exemple (suite) : Algorithme Calcul de la ristourne – Lecture des données On suppose que les données nécessaires au traitement (Nom du client et CA) ont été extraites d’une base de données à l’aide d’une requête et donc qu’elles sont disponibles sous la forme d’une table : N° du client 411001 411002 … Nom du Client Pierre Paul CA annuel 8 500,00 40 250,00 Il suffit alors de lire les enregistrements de la table du premier jusqu’au dernier : DEBUT LIRE N°Client du premier enregistrement de la table REPETER LIRE NomClient LIRE CA SI CA < 10 000 ALORS Taux ← 0 SINON SI CA < 50 000 ALORS Taux ← 0,02 SINON Taux ← 0,05 FIN SI FIN SI Ristourne ← CA × Taux AFFICHER NomClient, Ristourne LIRE N°Client de l’enregistrement suivant de la table JUSQU’AU N°Client du dernier enregistrement de la table FIN C) L’instruction TANT QUE Comme REPETER, l’instruction TANT QUE s’utilise quand on ne connaît pas par avance le nombre de répétitions du traitement. Les instructions (qui suivent l’instruction TANT QUE) sont exécutées (lancées) et répétées tant qu’une condition est satisfaite (en pratique : tant qu’il y a des traitements à effectuer !). TANT QUE Condition satisfaite FAIRE Instruction 1 Instruction 2 … Etat de la condition ? FIN TANT QUE Condition pour démarrer Répétition si la condition reste satisfaite 9 / 13 Exemple (suite) : Algorithme Calcul de la ristourne Déclaration des variables : Idem REPETER (Cf. B) sauf Réponse NomClient : texte (ou chaîne de caractères) CA : réel (ou monétaire) Ristourne : réel (ou monétaire) Taux : réel Réponse : texte Nom du client CA annuel réalisé avec le client Montant de la ristourne accordée Pourcentage de la ristourne Oui (pour démarrer et répéter), Non (pour arrêter) DEBUT Réponse ← Oui (Initialisation pour que l’ordinateur puisse exécuter l’instruction) TANT QUE Réponse = « Oui » FAIRE SAISIR NomClient SAISIR CA SI CA < 10 000 ALORS Taux ← 0 SINON SI CA < 50 000 ALORS Taux ← 0,02 SINON Taux ← 0,05 FIN SI FIN SI Ristourne ← CA × Taux AFFICHER NomClient, Ristourne SAISIR « Voulez-vous relancer le programme pour un autre client ? », Réponse FIN TANT QUE FIN Avec l’initialisation, l’instruction TANT QUE est identique à l’instruction REPETER. En revanche, dans un algorithme plus important, avec des instructions avant TANT QUE et REPETER, il peut y avoir une différence : REPETER : Les instructions (qui suivent REPETER) seront exécutées au moins une fois sans condition, ensuite elles seront éventuellement répétées (jusqu’à ce que la condition soit satisfaite). TANT QUE : Les instructions peuvent ne pas être exécutées (elles seront « sautées » si la condition n’est pas vérifiée), ensuite, si elles sont exécutées une première fois, elles seront éventuellement répétées (tant que la condition reste satisfaite). Exemple (suite) : Algorithme Calcul de la ristourne – Lecture des données On suppose que les données nécessaires au traitement (Nom du client et CA) ont été extraites d’une base de données à l’aide d’une requête 10 / 13 DEBUT LIRE N°Client du premier enregistrement de la table TANT QUE N°Client ≠ 0 FAIRE (Tant qu’il y a des clients !) LIRE NomClient LIRE CA SI CA < 10 000 ALORS Taux ← 0 SINON SI CA < 50 000 ALORS Taux ← 0,02 SINON Taux ← 0,05 FIN SI FIN SI Ristourne ← CA × Taux AFFICHER NomClient, Ristourne LIRE N°Client de l’enregistrement suivant de la table FIN TANT QUE FIN D) Les variables de type Compteur et les variables de type Cumul Dans les structures répétitives, il est possible d’ajouter une variable de type Compteur pour compter le nombre de répétitions des instructions : Compteur ← Compteur + 1 Le programme ajoutera 1 à chaque exécution. On peut également ajouter une variable de type Cumul pour cumuler (ajouter) les valeurs prises par une variable à chaque itération : Cumul_Variable ← Cumul_Variable + Variable Le programme ajoutera la valeur de la variable au cumul précédent à chaque itération. Exemple (suite) : Algorithme Calcul de la ristourne – Lecture des données Déclaration des variables NomClient : texte (ou chaîne de caractères) CA : réel (ou monétaire) Ristourne : réel (ou monétaire) Taux : réel Compteur : entier CumulRistourne : réel Nom du client CA annuel réalisé avec le client Montant de la ristourne accordée Pourcentage de la ristourne Compteur du nombre d’exécutions Montant total des ristournes accordées 11 / 13 DEBUT Compteur ← 0 CumulRistourne ← 0 (Initialisation pour l’ordinateur : les variables ont comme valeur de départ 0) LIRE N°Client du premier enregistrement de la table TANT QUE N°Client ≠ 0 FAIRE LIRE NomClient LIRE CA SI CA < 10 000 ALORS Taux ← 0 SINON SI CA < 50 000 ALORS Taux ← 0,02 SINON Taux ← 0,05 FIN SI FIN SI Ristourne ← CA × Taux AFFICHER NomClient, Ristourne Compteur ← Compteur + 1 (0 + 1 à la 1re exécution, 1 + 1 à la 2e …) CumulRistourne ← CumulRistourne + Ristourne LIRE N°Client de l’enregistrement suivant de la table FIN TANT QUE AFFICHER Compteur, CumulRistourne FIN NB : Dans cet exemple, le compteur indiquera le nombre total de clients traités (donc tous les clients de la table, qu’ils obtiennent ou non une ristourne…) IV- Les algorithmes des fonctions Dans un programme informatique, les fonctions sont des sous-programmes qui effectuent des opérations particulières. Une fonction effectue des traitements sur une ou plusieurs variables du programme principal et renvoie une valeur pour une variable de ce programme principal. FONCTION NOM_FONCTION (Var 1, Var 2,…) Déclaration des variables locales Instruction 1 Instruction 2 … Retourner Variable FIN FONCTION Variables du programme principal Variables spécifiques à la fonction Pour renvoyer une valeur de cette variable au programme principal 12 / 13 Exemple (suite) : Algorithme Calcul de la ristourne – Lecture des données Algorithme du programme principal : Déclaration des variables NomClient : texte (ou chaîne de caractères) CA : réel (ou monétaire) Ristourne : réel (ou monétaire) Compteur : entier CumulRistourne : réel Nom du client CA annuel réalisé avec le client Montant de la ristourne accordée Compteur du nombre d’exécutions Montant total des ristournes accordées DEBUT Compteur ← 0 CumulRistourne ← 0 LIRE N°Client du premier enregistrement de la table TANT QUE N°Client ≠ 0 FAIRE LIRE NomClient LIRE CA Ristourne ← RISTOURNE (CA) (« Appel » de la fonction) AFFICHER NomClient, Ristourne Compteur ← Compteur + 1 CumulRistourne ← CumulRistourne + Ristourne LIRE N°Client de l’enregistrement suivant de la table FIN TANT QUE AFFICHER Compteur, CumulRistourne FIN Algorithme de la fonction Calcul de la ristourne : FONCTION RISTOURNE (CA : réel) : réel Déclaration de la variable Taux : réel Pourcentage de la ristourne SI CA < 10 000 ALORS Taux ← 0 SINON SI CA < 50 000 ALORS Taux ← 0,02 SINON Taux ← 0,05 FIN SI FIN SI Ristourne ← CA × Taux Retourner Ristourne FIN FONCTION 13 / 13 Remarque : Création de fonctions personnalisées en VBA avec Excel VBA (Visual Basic pour Applications) est un langage informatique de programmation qui est intégré dans toutes les applications de Microsoft Office (c’est un langage dérivé du langage de programmation VB de Microsoft qui permet de créer des applications autonomes). Microsoft Excel permet de créer des fonctions personnalisées programmées en code VBA et placées dans un module. Elles sont ensuite accessibles dans la bibliothèque de fonction (Insertion / Fonction / Personnalisée). Exemples : - Une fonction Taux_RISTOURNE pour afficher le taux : - Une fonction RISTOURNE pour calculer directement la ristourne Le code VBA est une traduction des instructions de l’algorithme : IF ⇔ SI ; THEN ⇔ ALORS ; ELSE ⇔ SINON ; END IF ⇔ FIN SI