Les bases de l’Algorithmique
Qu'est-ce qu'un algorithme ? Le mot « algorithme » vient du nom du grand mathématicien persan Al Khwarizmi (vers l'an 820), qui introduisit en Occident la numération décimale (rapportée d'Inde) et enseigna les règles élémentaires des calculs s'y rapportant. La notion d'algorithme est donc historiquement liée aux manipulations numériques, mais elle s'est progressivement développée pour porter sur des objets de plus en plus complexes, des textes, des images, des formules logiques, des objets physiques, etc.
Qu’est-ce que « l’algomachin » ? L’algorithmique est donc un terme d’origine arabe, comme algèbre, amiral ou zénith. Ce n’est pas une excuse pour massacrer son orthographe, ou sa prononciation. Ainsi, l’algo n’est pas « rythmique », à la différence du bon rock’n roll. L’algo n’est pas non plus « l’agglo ». Alors, ne confondez pas l’algorithmique avec l’agglo rythmique, qui consiste à poser des parpaings en cadence. Avez-vous déjà ouvert un livre de recettes de cuisine ? Avez vous déjà déchiffré un mode d’emploi traduit directement du coréen pour faire fonctionner un magnétoscope ou un répondeur téléphonique réticent ? Si oui, sans le savoir, vous avez déjà exécuté des algorithmes.
Qu’est-ce qu’un algorithme Qu’est-ce qu’un algorithme ? Un algorithme est une suite logique d’instructions permettant de résoudre un problème (ou de répondre à un besoin). Qu’est ce que veut dire « écrire un algorithme » - Analyser et comprendre le problème : étude des données fournies et des résultats attendus. - Résoudre le problème : C’est trouver les structures de données adaptées ainsi que l’enchaînement des actions à réaliser pour passer des données aux résultats. Comment exécuter un algorithme sur un ordinateur ? Il faut traduire cet algorithme à l’aide d’un langage de programmation connu par l’ordinateur.
Langage de programmation (code) Exécution par l’ordinateur Enoncé d’un problème Analyse, compréhension Pseudo code Résolution Algorithme Langage de programmation (code) Codification Programme Interprétation Exécution par l’ordinateur Langage machine
Règles à respecter pour l'écriture d'un algorithme Il est défini sans ambiguïté. Il se termine après un nombre fini d'opérations. Il manipule des objets définis de manière très précise.
Règles de mise en forme d’un algorithme Nom de l’algorithme Début (* commentaires *) Instruction 1 Instruction 2 Fin
Les objets utilisés dans un algorithme Les différents objets Les variables Une variable est un objet contenant une valeur appelée à être modifiée au cours de l'algorithme. Les constantes Une constante est un objet dont la valeur ne change pas au cours de l'algorithme. Définition des objets Un objet est définis par : Un identificateur : suite quelconque de caractères. Un type : Booléen, numérique (entier ou réel), caractère ou chaîne de caractères, tableau... Une valeur : c'est le contenu de l'objet.
Règles de mise en forme d’un algorithme Nom de l’algorithme Déclaration des variables et constantes Début (* commentaires *) Instructions 1 Instructions 2 Fin
Exemple : Écrire un algorithme qui : Demandera à l’utilisateur son nom et le nombre de pains qu’il désire acheter ; Calculera le montant à payer ; Et affichera le résultat.
Exemple (* commentaires *) Instruction1 Instruction2 Algorithme Prix_du_pain Variables Nom : Chaîne de caractères (* nom de la personne *) Nombre : Entier (* nombre de pains demandés *) Montant : Réel (* montant à payer *) Constantes Prix = 1,20 (* prix d’un pain *) Début (* commentaires *) Instruction1 Instruction2 Fin
Instructions élémentaires Affectation : L'opération consiste à affecter une valeur à une variable. Elle est représentée par une flèche orientée à gauche Exemple : NOMBRE 15 SOMME 0 NOMBRE2 NOMBRE3 + NOMBRE4 COMPTEUR COMPTEUR + 1 SOMME SOMME + NOMBRE
Instruction d'entrée Une instruction d'entrée permet de récupérer une valeur sur un périphérique d'entrée (valeur saisie au clavier par exemple). Notation : Saisir nom variable Exemple précédent : Saisir Nom Saisir Nombre
Instruction de sortie Permet d'afficher à l'écran du "texte", le contenu d'un objet (variable ou constante) voir le résultat d'une expression. Notation : Afficher nom variable ou Afficher « texte » Exemple : Afficher « Le montant à payer est : » ; Montant
Expressions Des opérations sur les objets : variables, constantes ou encore littéraux (valeurs numériques ou alphanumériques ; peuvent être réalisées à l'aide d'opérateurs arithmétiques ou logiques pour former des expressions. Les principaux opérateurs arithmétiques (à partir des variables déclarées ci-dessus) Opérations Opérateurs Exemple Addition + Prix + Nombre Soustraction - Montant - Remise Multiplication * HorsTaxe * 1,206 Division / Montant / Nombre Puissance ^ Montant ^ 2
Exemple : Algorithme Prix_du_pain Variables Nom : Chaîne de caractères (* nom de la personne *) Nombre : Entier (* nombre de pains demandés *) Montant : Réel (* montant à payer *) Constantes Prix = 1,20 (* prix d’un pain *) Début Afficher « Quel est votre nom ? » Saisir Nom Afficher « Combien de pain désirez-vous ? » Saisir Nombre Montant Prix * Nombre Afficher « Le montant à payer est de » ; Montant ; « euros. » Fin
Que se passe-t-il sur l’écran de l’ordinateur à l’exécution de l’algorithme ? Valeur saisie par l’utilisateur Quel est votre nom ? Arthur Combien de pain désirez-vous ? 5 Le montant à payer est de 6 euros.
Que se passe-t-il « dans l’ordinateur » à l’exécution de l’algorithme ? Nom Arthur Nombre 5 Prix 1,2 Montant 5 * 1,20 = 6 Montant 6
Les structures alternatives et conditionnelles vérifiée Oui Non Action 2 Action 1 La structure alternative SI condition vérifiée Alors action1 Sinon action2 FIN SI suite algorithme
Les opérateurs logiques Comparaison Opérateurs = Égal à < Inférieur à > Supérieur à <= Inférieur ou égal à >= Supérieur ou égal à <> Différent de ET Et (l’un et l’autre) OU Ou (l’un ou l’autre) NON Non
Exemple : Une centrale de cuisson (Exemple : La mie Câline) commande des baguettes surgelées à un fabricant. Celui-ci accorde des remises en fonction du chiffre d’affaires réalisé. Le taux de remise est de 5 % pour un CA de moins de 1000 euros et de 10 % au-delà de 1000 euros de CA. Écrire un algorithme qui : Demandera à l’utilisateur sa raison sociale et le nombre de baguettes qu’il désire commander ; Calculera le chiffre d’affaires réalisé ; Calculera le montant de la remise ; Et affichera les résultats.
Algorithme prix_du_pain Variables Raison : Chaîne de caractères (* raison sociale de l’ent. *) Nombre : Entier (*nombre de baguettes commandées *) CA : Réel (* chiffre d’affaires réalisé *) Remise : Réel (* montant de la remise *) Montant : Réel (* montant à payer *) Constantes Prix = 0,5 (* prix de la baguette *) Début (* saisie des informations concernant la commande *) Afficher « Quelle est la raison sociale de l’entreprise ? » Saisir Raison Afficher « Combien de baguettes désirez vous commander ? » Saisir Nombre (* calcul du chiffre d’affaires et de la remise accordée *) CA Prix * Nombre Si CA < 1000 Alors Remise CA * 0,05 Sinon Remise CA * 0,1 Fin si (* calcul du montant à payer et affichage du résultat *) Montant CA – Remise Afficher « Le montant à payer est de »,Montant, « euros. » Fin
Que se passe-t-il sur l’écran de l’ordinateur à l’exécution de l’algorithme ? Valeur saisie par l’utilisateur Quel est la raison sociale de l’entreprise ? La Mie Câline Combien de baguettes désirez-vous commander ? 2500 Le montant à payer est de 1125 euros.
Que se passe-t-il « dans l’ordinateur » à l’exécution de l’algorithme ? Raison La Mie Câline Nombre 2500 Prix 0.5 CA CA > 1000 ? Remise Montant 2500 x 0,5 = 1250 Vrai 1250 x 0,1 = 125 1250 – 125 = 1125 Remise 125 Montant 1125 CA 1250
Les structures alternatives, conditionnelles, de choix vérifiée Oui Non Action 1 La structure conditionnelle SI condition vérifiée Alors action FIN SI suite algorithme
Exemple : Une centrale de cuisson (Exemple : La mie Câline) commande des baguettes surgelées à un fabricant. Celui-ci accorde des remises en fonction du chiffre d’affaires réalisé. Le taux de remise est de 10 % uniquement au-delà de 1000 euros de CA. Écrire un algorithme qui : Demandera à l’utilisateur sa raison sociale et le nombre de baguettes qu’il désire commander ; Calculera le chiffre d’affaires réalisé ; Calculera le montant de la remise ; Et affichera les résultats.
Algorithme prix_du_pain Variables Raison : Chaîne de caractères (* raison sociale de l’ent. *) Nombre : Entier (*nombre de baguettes commandées *) CA : Réel (* chiffre d’affaires réalisé *) Remise : Réel (* montant de la remise *) Montant : Réel (* montant à payer *) Constantes Prix = 0,5 (* prix de la baguette *) Début (* saisie des informations concernant la commande *) Afficher « Quelle est la raison sociale de l’entreprise ? » Saisir Raison Afficher « Combien de baguettes désirez vous commander ? » Saisir Nombre (* calcul du chiffre d’affaires et de la remise accordée *) CA Prix * Nombre Remise 0 (* initialisation de la remise à zéro *) Si CA > 1000 Alors Remise CA * 0,1 Fin si (* calcul du montant à payer et affichage du résultat *) Montant CA – Remise Afficher « Le montant à payer est de »,Montant, « euros. » Fin
Que se passe-t-il sur l’écran de l’ordinateur à l’exécution de l’algorithme ? Valeur saisie par l’utilisateur Quel est la raison sociale de l’entreprise ? La Mie Câline Combien de baguettes désirez-vous commander ? 1500 Le montant à payer est de 750 euros.
Que se passe-t-il « dans l’ordinateur » à l’exécution de l’algorithme ? Raison La Mie Câline Nombre 1500 Prix 0.5 Remise CA CA > 1000 ? Remise Montant 1500 x 0,5 = 750 Faux 750 – 0 = 750 Remise Montant 750 CA
Exemple : Une centrale de cuisson (Exemple : La mie Câline) commande des baguettes surgelées à un fabricant. Celui-ci accorde des remises en fonction du chiffre d’affaires réalisé. Le taux de remise est de 5 % au-delà de 1000 euros de CA, 7 % au-delà de 2000 € et de 10 % au-delà de 3000 €. Écrire un algorithme qui : Demandera à l’utilisateur sa raison sociale et le nombre de baguettes qu’il désire commander ; Calculera le chiffre d’affaires réalisé ; Calculera le montant de la remise ; Et affichera les résultats.
Algorithme prix_du_pain Variables … Constantes Début (* saisie des informations concernant la commande *) (* calcul du chiffre d’affaires et de la remise accordée *) CA Prix * Nombre Remise 0 (* initialisation de la remise à zéro *) Si CA < 1000 Alors Remise 0 Sinon Si CA < 2000 Alors Remise CA * 0,05 Sinon Si CA < 3000 Alors Remise CA * 0,07 Sinon Remise CA * 0,1 Finsi Fin si (* calcul du montant à payer et affichage du résultat *) Fin
Que se passe-t-il sur l’écran de l’ordinateur à l’exécution de l’algorithme ? Valeur saisie par l’utilisateur Quel est la raison sociale de l’entreprise ? La Mie Câline Combien de baguettes désirez-vous commander ? 2500 Le montant à payer est de 1188 euros.
Que se passe-t-il « dans l’ordinateur » à l’exécution de l’algorithme ? Raison La Mie Câline Nombre 2500 Prix 0.5 Remise CA CA < 1000 ? CA < 2000 ? Remise Montant 2500 x 0,5 = 1250 Faux vrai 1250 x 5 % = 62 1250 – 62 = 1188 Remise 62 Montant 1188 CA 1250
La variable doit être de type caractère ou entier La structure de choix Selon Variable Faire Valeur 1 : action1 Valeur 2 : action2 … Valeur n : action n Sinon : action par défaut Fin selon La variable doit être de type caractère ou entier
Exemple : Un distributeur automatique distribue des confiseries. L’utilisateur tape le code de la confiserie désirée, en fonction de ce code le distributeur affiche le prix du produit et le délivre. Les produits A, B et C coûtent 1 €, Le produit D coûte 1,20 €, Le produit E, F coûte 1,50 €, Les produits G,H, I coûtent 2 €, Si un autre code est saisi, le prix sera de 0 et un message d’erreur sera affiché. Écrire un algorithme qui : Demandera à l’utilisateur le code de la confiserie désirée ; Déterminera le prix de celle-ci en fonction du code saisi ; Et affichera le prix de la confiserie.
Algorithme distributeur Variables Code : Caractère (* code du produit désiré *) Prix : Réel (* prix du produit désiré *) Début (* saisie du code du produit désiré *) Afficher « Saisir votre code : » Saisir Code (* détermination du prix en fonction du code *) SELON Code FAIRE A, B : Prix 1 D : Prix 1,2 E, F : Prix 1,5 G, H, I : Prix 2 Sinon : Prix 0 FINSELON (* Affichage du prix si aucune erreur de saisie n’a été commise *) SI prix = 0 ALORS Afficher « Le code n’existe pas. » SINON Afficher « Le prix du produit désiré est de », Prix, « euros. » FINSI Fin
Que se passe-t-il sur l’écran de l’ordinateur à l’exécution de l’algorithme ? Valeur saisie par l’utilisateur Saisir votre code : F Le prix du produit désiré est de 1,5 euros.
Que se passe-t-il « dans l’ordinateur » à l’exécution de l’algorithme ? Code F Code = « F » donc Prix 1,5 Prix 1,5
La structure répétitive La structure Pour … Fin Pour Permet de répéter un nombre déterminé de fois une (ou plusieurs) action(s). Pour compteur allant de 1 à n Faire action 1 action 2 … action n Finpour Permet de compter le nombre de répétition de l’action. La variable compteur sera de type entier ou caractère. Lorsque le nombre voulu de répétition est atteint, l'algorithme se poursuit après la boucle (structure).
Exemple : Un boulanger désire préparer son tarif pour la vente de ses croissants. Sur l’ordinateur il désire automatiser le calcul du prix de ses croissants. Il suppose que ses clients achèteront entre 1 et 10 croissants. Écrire un algorithme qui : Automatisera le calcul du prix de 1, puis 2, puis 3, … puis 10 croissants sachant que le prix unitaire est de 0,80 euros.
Algorithme Prix_des_croissants Variables Compteur : entier (* permet de compter de 1 à 10 *) Montant : réel (* montant à payer lors de l’achat de croissants *) Début Afficher « Tarif des croissants : » POUR Compteur allant de 1 à 10 faire Montant Compteur * 0,80 SI Compteur = 1 ALORS Afficher Compteur , « croissant coûte », Montant, « € » SINON Afficher Compteur, « croissants coûtent »,Montant, « € » FINSI FINPOUR Fin
Que se passe-t-il sur l’écran de l’ordinateur à l’exécution de l’algorithme ? Tarif des croissants : 1 croissant coûte 0,80 € 2 croissants coûtent 1,60 € 3 croissants coûtent 2,40 € 4 croissants coûtent 3,20 € 5 croissants coûtent 4,00 € 6 croissants coûtent 4,80 € 7 croissants coûtent 5,60 € 8 croissants coûtent 6,40 € 9 croissants coûtent 7,20 € 10 croissants coûtent 8,00 €
Que se passe-t-il « dans l’ordinateur » à l’exécution de l’algorithme ? Compteur 1 A 20 Prix Compteur * 0,80 8,00 7,20 10 6,40 9 5,60 8 7 4,80 6 4,00 5 3,20 4 2,40 3 1,60 2 1 0,80 Compteur Montant
Les structures itératives La structure Tant que… Fin Tant que Permet la répétition d'une (ou plusieurs) action(s) tant qu'une condition est satisfaite. Notation : Tant que condition Faire action 1 action 2 … action n Fin Tant Que Teste si la condition est vérifiée . Si c'est le cas il y a exécution des actions. Dans le cas contraire l'algorithme se poursuit après la boucle (structure).
Exemple : Écrire un algorithme qui : Un boulanger (vendant exclusivement des baguettes) désire gérer toutes ses ventes sur ordinateur. Chacun de ses clients achète 1 ou plusieurs baguettes. Le boulanger peut ne pas avoir de clients dans la journée… L’ordinateur calcule pour chaque client le montant à payer. Écrire un algorithme qui : demandera si un nouveau client est présent, puis, automatisera le calcul du montant à payer par client.
Algorithme gestion_boulangerie Variables Rep : Caractère (* réponse à la question présence d’un client *) Bag : Entier (* nombre de baguettes achetées par le client *) Montant : Réel (* montant à payer par un client *) Constantes Prix = 0,60 Début (* traitement des clients *) Afficher « Y a-t-il un client ? (O/N) » Saisir Rep Tant que Rep = « O » Faire Afficher « Combien de baguettes désirez-vous ? » Saisir Bag Montant Bag * Prix Afficher « Cela vous fera », Montant, « euros » Afficher « Y a-t-il un autre client ? (O/N) » Saisir Rep Fin Tant que Afficher « Fin du programme. » Fin
Que se passe-t-il sur l’écran de l’ordinateur à l’exécution de l’algorithme ? Valeur saisie par l’utilisateur Y a-t-il un client (O/N) ? O Combien de baguettes désirez vous ? 3 Cela vous fera 1,80 euros. Y a-t-il un autre client (O/N) ? N Fin du programme.
Que se passe-t-il « dans l’ordinateur » à l’exécution de l’algorithme ? Saisir Rep Rep = “O” VRAI FAUX Sortie de la boucle Traitement
La structure Répéter Jusqu’à Permet la répétition d'une (ou plusieurs) action(s) jusqu’à la satisfaction d’une condition. Notation : Répéter action 1 action 2 … action n Jusqu’à Condition Suite du traitement Teste si la condition est vérifiée . Si ce n’est pas le cas il y a exécution des actions. Quand la condition est vérifiée l'algorithme se poursuit après la boucle (structure).
Exemple : Écrire un algorithme qui : Un boulanger (vendant exclusivement des baguettes) désire gérer toutes ses ventes sur ordinateur. Chacun de ses clients achète 1 ou plusieurs baguettes. Le boulanger aura obligatoirement un client dans la journée. L’ordinateur calcule pour chaque client le montant à payer. Écrire un algorithme qui : demandera si un nouveau client est présent, puis, automatisera le calcul du montant à payer par client.
Algorithme gestion_boulangerie Variables Rep : Caractère (* réponse à la question présence d’un client *) Bag : Entier (* nombre de baguettes achetées par le client *) Montant : Réel (* montant à payer par un client *) Constantes Prix = 0,60 Début (* traitement des clients *) Répéter Afficher « Combien de baguettes désirez-vous ? » Saisir Bag Montant Bag * Prix Afficher « Cela vous fera », Montant, « euros » Afficher « Y a-t-il un autre client ? (O/N) » Saisir Rep Jusqu’à Rep = « N » Afficher « Fin du programme. » Fin
Que se passe-t-il sur l’écran de l’ordinateur à l’exécution de l’algorithme ? Valeur saisie par l’utilisateur Combien de baguettes désirez vous ? 3 Cela vous fera 1,80 euros. Y a-t-il un autre client (O/N) ? N Fin du programme.
Que se passe-t-il « dans l’ordinateur » à l’exécution de l’algorithme ? Rep = “N” VRAI FAUX Sortie de la boucle Traitement Saisir Rep
Saisir Rep Traitement Saisir Rep Rep = “O” Rep = “O” Traitement VRAI FAUX Sortie de la boucle Traitement Rep = “O” FAUX VRAI Sortie de la boucle Traitement Saisir Rep
Conseil pour réussir un algorithme… Il faut être méthodique et rigoureux. En effet, chaque fois qu’on écrit une série d’instructions qu’on croit justes, il faut systématiquement se mettre mentalement à la place de la machine qui va les exécuter, armé d'un papier et d'un crayon, afin de vérifier si le résultat obtenu est bien celui que l’on voulait. Cette opération est indispensable, si l’on ne veut pas écrire à l’aveuglette.
Évitez d’employer la méthode Shadok
À vous de jouer !