Chapitre 1 – INTRODUCTION A L'ALGORITHMIQUE 1. Notion d'algorithme Un algorithme est la description d'une méthode de résolution d'un problème. Cette description est sous la forme d'un ensemble d'instructions à exécuter pour aboutir à la solution. Par exemple, un algorithme pour trouver le plus grand diviseur commun (pgdc) de deux entiers est : retrancher le plus petit au plus grand tant que les deux entiers sont différents; l'entier final obtenu est le pgdc. Si on exécute cet algorithme avec les nombres (84 , 36), on aura les résultats intermédiaires (48 , 36 ) , (12, 36 ), (12 , 24 ) et le résultat final (12, 12 ). Le pgdc de 84 et 36 est donc 12. 2. Représentation d’un algorithme La représentation d'un algorithme doit se faire en utilisant une notation simple de manière à ce qu’elle soit compréhensible de tous. Le langage algorithmique, aussi appelé pseudolangage, est la notation la plus simple. C'est un langage proche du langage courant mais qui n'est pas standardisé, c'est pourquoi on peut rencontrer des différences selon les auteurs. Un algorithme peut aussi être représenté en utilisant des symboles graphiques pour décrire la suite d'instructions à exécuter. La représentation graphique est intéressante mais seulement pour des algorithmes de petite taille. Un long algorithme nécessiterait un espace important pour la représentation des symboles graphiques et ne serait ainsi pas très lisible. Un algorithme peut également être représenté en utilisant un langage de programmation. Il correspond alors à un programme informatique qu'un ordinateur pourra exécuter. 3. Les acteurs autour d’un algorithme A priori, on peut distinguer deux acteurs : le concepteur de l'algorithme et l'exécutant. Le concepteur de l'algorithme est une personne qui connaît la solution du problème à résoudre et la décrit sous la forme d'un ensemble ordonné d'instructions. L'exécutant est une personne ou une machine (un ordinateur par exemple) qui exécute les instructions de l'algorithme pour aboutir à la solution du problème. Dans le cas où l'exécutant est un ordinateur, il intervient souvent un troisième acteur appelé utilisateur qui est une personne qui interagit avec l'ordinateur en lui fournissant des informations et en recevant les résultats de l'exécution qui peuvent être des informations affichées à l'écran. A noter qu'une même personne peut être concepteur puis utilisateur d'un algorithme. 4. Les données d'un algorithme Un algorithme de résolution d'un problème agit sur des informations également appelées données et qui peuvent être de plusieurs types. Un type permet de caractériser des données de même nature en déterminant les valeurs possibles pour ces informations ainsi que les opérations qu'on peut leur appliquer. Dr. Djamal Seck / L2 MPI 2018-2019 Chapitre 1 – Introduction à l'algorithmique 1/6 4-1. Les types de données de base On distingue les types données de base suivants: - entier ( valeurs possibles : les nombres entiers positifs ou négatifs) - réel ( valeurs possibles : les nombres réels positifs ou négatifs) - caractère ( valeurs possibles : lettre, chiffre, ponctuation, espace, etc. ) - chaîne (valeurs possibles : toute suite de 0 , un ou plusieurs caractères) - booléen ( valeurs possibles : VRAI, FAUX) Remarque Une valeur de type caractère doit être entre apostrophes. Par exemple: 'A' , '3' Une valeur de type chaîne doit être entre guillemets. Par exemple: "Bonjour" , "A" 4-2. Les variables et les constantes Les variables et les constantes servent à contenir des informations utilisées dans un algorithme. Une variable ou une constante est caractérisée par : - un identificateur, qui est un nom unique qui permet de la désigner, - un type, qui correspond au type de l'information qu'elle contient, - une valeur, c'est à dire l'information qu'elle contient. La valeur d'une variable peut être modifiée dans un algorithme contrairement à celle d'une constante. Mais avant de les utiliser dans un algorithme il faut d'abord les déclarer. On déclare une variable en donnant son identificateur et son type selon la syntaxe suivante : id_variable : type Un identificateur peut contenir des lettres, des chiffres et le caractère _ (souligné). Mais le premier caractère ne peut pas être un chiffre. Exemple a : entier On peut initialiser une variable (lui affecter une première valeur) lors de sa déclaration. On peut aussi déclarer en même temps plusieurs variables de même type. Exemple x = 5 , y , z : entier Pour déclarer une constante, on utilise la syntaxe suivante : id_constante = valeur : type Exemple N = 100 : entier 5. Les opérations sur les données Dans un algorithme, les opérations qu'on peut appliquer sur les données dépendent de leurs types. On distingue les opérations suivantes: Dr. Djamal Seck / L2 MPI 2018-2019 Chapitre 1 – Introduction à l'algorithmique 2/6 - Opérations arithmétiques ( pour les types entier et réel ) : addition ( + ) , soustraction ( - ) , multiplication ( × ) , division réelle ( / ) , division entière ( div ) , modulo ( mod ) - Opérations de comparaison ( pour tous les types de base ) : inférieur ( < ) , inférieur ou égal ( ≤ ), supérieur ( > ) , supérieur ou égal ( ≥ ) , égal ( == ) , différent ( ≠ ) - Opérations logiques ( pour le type booléen ) : ET logique ( ET ) , OU logique ( OU ) , Négation ( NON ) Remarques La division entière avec l'opérateur div est réservée aux nombres entiers et donne comme résultat un nombre entier. Par exemple, 7 div 2 donne 3 L'opération modulo avec l'opérateur mod donne le reste de la division entière. Par exemple, 7 mod 2 donne 1 Les opérations de comparaison et les opérations logiques donnent comme résultat soit la valeur VRAI soit la valeur FAUX. L'opération logique ET est une opération binaire qui donne le résultat VRAI seulement si ses deux membres ont pour valeur VRAI. L'opération logique OU est une opération binaire qui donne le résultat VRAI si au moins un de ses deux membres a pour valeur VRAI. L'opération logique NON est une opération unaire qui donne le résultat FAUX si son unique membre a pour valeur VRAI et le résultat VRAI dans le cas contraire. 6. Représentation d’un algorithme en pseudo-code En pseudo-code, un algorithme est structuré de la manière suivante : Algorithme Nom de l'algorithme Constante // Déclaration des constantes Début Variable // Déclaration des variables Instructions Fin On peut mettre des commentaires sur une ligne après les symboles // ou sur plusieurs lignes entre les symboles /* et */. Un commentaire ne fait pas partie d'un algorithme mais permet d'en faciliter la compréhension. Dr. Djamal Seck / L2 MPI 2018-2019 Chapitre 1 – Introduction à l'algorithmique 3/6 7. Les instructions de base 7-1. L’affectation Avec l'instruction d'affectation l'ordinateur donne à une variable la valeur d'une expression. Elle se fait avec l'opérateur = selon la syntaxe suivante : id_variable = expression où expression est: - soit un identificateur de variable ou de constante ( par exemple : a , PI, r, age) - soit une valeur (par exemple : 45, 'A', "bonjour"), - une opération, c'est à dire une combinaison d'identificateurs, de valeurs et d'opérateurs (par exemple : 2 × r × PI) Une expression possède un type et une valeur. Par exemple, si r est une variable qui vaut 5.0 et PI une constante qui vaut 3.14 alors l'expression 2 × r × PI est de type réel et vaut 31.4 Avec l'instruction d'affectation, l'ordinateur évalue d'abord l'expression puis donne la valeur trouvée à la variable. Ceci revient à remplacer l'ancienne valeur de la variable par la valeur de l'expression. Exemple Variable x , y : entier x=5 // x reçoit la valeur 5 y=x–2 // y reçoit la valeur 3 x=x+1 // x reçoit la valeur 6 Remarques - A gauche de l'opérateur d'affectation doit se trouver l'identificateur de la variable à qui l'ordinateur doit donner la valeur de l'expression située à droite. Ainsi, par exemple, les instructions x – 2 = y et 5 = x n’ont pas de sens. - L’instruction x = x + 1 a un sens car l'ordinateur évalue d'abord x + 1 avec la valeur de x avant l'affectation et donne ensuite le résultat à x. 7-2. L'écriture Avec l'instruction d'écriture, l'ordinateur affiche à l'écran des valeurs d'expressions. Sa syntaxe est la suivante: Ecrire( expression1 , expression2 , … , expressionN ) Exemple Variable a = 5 , b = 2 : entier Ecrire( "La valeur de a est " , a , "et celle de b est " , b ) Dr. Djamal Seck / L2 MPI 2018-2019 Chapitre 1 – Introduction à l'algorithmique 4/6 7-3. La lecture Avec l'instruction de lecture, l'ordinateur reçoit une ou plusieurs valeurs entrées au clavier par l'utilisateur dans des variables données en paramètre. Sa syntaxe est la suivante: Lire( id_variable1 , id_variable2 , … , id_variableN ) Il est conseillé de précéder l’instruction de lecture par une instruction d'écriture pour l'affichage d'un message invitant l'utilisateur à entrer une ou des valeurs. Exemple Variable x , y, z : entier Ecrire( "Donnez un entier" ) Lire( x ) // x va contenir l'entier donné par l'utilisateur Ecrire( "Donnez deux autres entiers" ) Lire( y , z ) // y et z vont contenir les deux entiers donnés par l'utilisateur Ecrire( "Vous avez donné " , x , " puis " , y , " puis " , z ) 8. Exemples d'algorithme Exemple 1 Etant données deux variables x et y, on veut donner à x la valeur de y et à y celle de x. Si on commence par l'instruction x = y on va perdre la valeur de x. Idem, si on commence par l'instruction y = x on va perdre la valeur de y. La solution consiste à utiliser une troisième variable pour garder d'abord la valeur de x. Ensuite, on affecte à x la valeur de y. Enfin, on affecte à y la valeur de la troisième qui est celle de x qu'on y avait gardée. D'où l'algorithme suivant: Algorithme Echange Début Variable x , y, tmp : entier Ecrire( "Donnez les valeurs respectives des deux entiers x et y : " ) Lire(x , y) Ecrire( "Avant échange : x vaut ", x , " et y vaut : " , y ) tmp = x x=y y = tmp Ecrire( "Après échange : x vaut ", x , " et y vaut : ", y ) Fin Dr. Djamal Seck / L2 MPI 2018-2019 Chapitre 1 – Introduction à l'algorithmique 5/6 A l'exécution, si l'utilisateur donne, par exemple, les valeurs 2 pour x et 5 pour y, il verra à l'écran: Donnez les valeurs respectives des deux entiers x et y : 2 5 Avant échange : x vaut 2 et y vaut : 5 Après échange : x vaut 5 et y vaut : 2 Exemple 2 Algorithme qui affiche le diamètre, la circonférence et la surface d'un cercle dont le rayon est donné par l'utilisateur. Algorithme Cercle Constante PI = 3.14 : réel Début Variable r , d , c , s : réel Ecrire( "Donnez le rayon du cercle : " ) Lire( r ) d=2×r c = 2 × PI × r s = PI × r × r Ecrire( "Le diamètre est ", d , " , la circonférence est " , c , " et la surface est " , s) Fin A l'exécution, si l'utilisateur donne, par exemple, la valeur 5 pour le rayon, il verra à l'écran: Donnez le rayon du cercle : 5 Le diamètre est 10.00 , la circonférence est 31.40 et la surface est 78.50 Dr. Djamal Seck / L2 MPI 2018-2019 Chapitre 1 – Introduction à l'algorithmique 6/6