L’algorithmique

Qu’est-ce qu’un algorithme ?

Selon le dictionnaire Larousse, l’algorithmique est un :

Ensemble de rĂšgles opĂ©ratoires dont l’application permet de rĂ©soudre un problĂšme Ă©noncĂ© au moyen d’un nombre fini d’opĂ©rations. Un algorithme peut ĂȘtre traduit, grĂące Ă  un langage de programmation, en un programme exĂ©cutable par un ordinateur.

Les algorithmes dans la vie quotidienne

Les algorithmes sont omniprĂ©sent dans nos vies et nous les utilisons quotidiennement mĂȘme sans faire usage d’un appareil numĂ©rique. Le simple fait, par exemple, de suivre une recette de cuisine est un algorithme puisqu’il s’agit d’une suite logique et finie d’opĂ©ration menant Ă  un rĂ©sultat attendu (selon nos capacitĂ© culinaire bien sur 😉).

Autre exemple: rechercher un mot dans le dictionnaire. Ce problĂšme demande une suite logique d’opĂ©ration que l’on pourraient dĂ©tailler comme suit :

  1. Ouvrir Ă  la premiĂšre lettre du mot rechercher.
  2. Lire le premier mot de la page.
  3. VĂ©rifier si le mot lu est avant notre mot selon l’ordre alphabĂ©tique.
  4. Si celui-ci se situe avant le mot recherchĂ©, lire le mot suivant et recommencer l’étape 3.
  5. sinon, le mot est trouvé et on arrÚte la recherche.

L’algorithme du dictionnaire met d’ailleurs en lumiĂšre des concepts algorithmiques qui sont la base de tous les langages informatique : les structures de contrĂŽle et structures de donnĂ©es.

Note : Ă©crire une algorithme, c’est se demander comment l’on procĂšderait pour effectuer une tĂąche.

Structures de contrÎle et structures de données

Les algorithmes permmettent donc la manipulation des donnĂ©es. Mais celle-ci n’est pas suffisante. Si la donnĂ©e n’est pas enregistrĂ©e quelque part, elle ne peut pas ĂȘtre exploitĂ©e. Il y a donc lieu de les stocker de façon temporaire (la mĂ©moire vive) ou permanent (une base de donnĂ©e).

Pour reprendre l’exemple du dictionnaire, l’efficacitĂ© d’un algorithme de recherche de mot dĂ©pend de l’organisation du stockage. On imagine parfaitement la complexitĂ© d’un tel algorithme dans le cas ou les mots seraient placĂ©s de façon dĂ©sordonnĂ©e: impossible de savoir ou l’on en est dans notre recherche.

Attention : Le stockage et l’organisation des donnĂ©es ont des consĂ©quences sur leur manipulation et l’efficience des algorithmes.

Structures de données

Les structures de donnĂ©es permettent d’organiser les donnĂ©es en vue de les traiter plus aisĂ©ment. Elles correspondent Ă  un espace mĂ©moire allouĂ© par l’algorithme pour stocker les donnĂ©es manipulĂ©es par un algorithme.

Reprenons l’exemple du dictionnaire. Il repose sur la manipulation de deux structures de donnĂ©es :

Plus généralement, on distingue les structures suivantes :

Les constantes
une structure de donnĂ©es dont la valeur ne change pas au fil de l’algorithme.
Les variables
une structure de donnĂ©es qui peuvent Ă©voluer au fil de l’algorithme.
Les tableaux
une structure de donnĂ©es reprĂ©sentant une sĂ©quence d’élĂ©ment auquel on peut accĂ©der par leur position/leur indice.

Important : plus on dĂ©clare de variables, plus un algorithme utilise d’espace mĂ©moire, plus on favorise l’obsolĂ©cence matĂ©riel.

Structures de contrĂŽle

Les structures de contrĂŽle permettent de manipuler les donnĂ©es en vue de faire effectuer Ă  l’algorithme une opĂ©ration particuliĂšre.

Reprenons l’exemple du dictionnaire. Il repose sur deux structures de contrîle :

Plus généralement, on distingue les structures suivantes :

Les séquences
une structure de contrîle permettant d’effectuer une action.
Les conditions
une structure de contrĂŽle permettant de vĂ©rifier la valeur d’une variable par rapport Ă  un autre donnĂ©e.
une structure de contrĂŽle permettant d’effectuer une action selon son rĂ©sultat.
Les boucles
un structure de contrĂŽle permettant d’effectuer un nombre de fois dĂ©fini une action.

Attention : Une boucle qui n’a pas de fin est appelĂ©e boucle infini et est une cause rĂ©guliĂšre d’erreur en programmation.

Pourquoi les algorithmes sont essentiel en informatique ?

Un ordinateur est un outil permettant l’exĂ©cution de taches rĂ©pĂ©titive et de calculs rapides.

L’algorithmique est une discipline importante en informatique car elle permet de dĂ©composer un problĂšme/un objectif/un rĂ©sultat en un ensemble d’opĂ©rations/de tĂąches qui seront demandĂ©es Ă  la machine via un langage de programmation.

Note : L’algorithmique est la discipline phare du dĂ©veloppaire. Elle permet de pouvoir rĂ©soudre un problĂšme indĂ©pendament du langage de programmation utilisĂ© par la suite.

En informatique, il est possible de dĂ©ployer de nombreux algorithmes : recherche, analyse, comparaison d’élĂ©ments, classement d’informations, extraction de donnĂ©es, etc.

En somme, un algorithme permet la manipulation de données à des fins de traitements spécifique.

Structure et nomenclature des algorithmes

Un algorithme répond à une nomenclature permettant aux développaires de comprendre celui-ci indépendament du langage de programmation utilisé par la suite.

Note : Il est important de respecter cette nomenclature car, dans un projet informatique, la personne qui imagine l’algorithme et celle qui le programme ne sont pas forcement les mĂȘmes.

Structure gĂ©nĂ©rale d’un algorithme

Un algorithme se compose de plusieurs blocs :

  1. L’entĂȘte, qui dĂ©finie le type d’algorithme et son nom
  2. La partie déclarative qui définie les structures de données constantes et variables
  3. Le corps de l’algorithme qui indique les instructions de l’algorithme son dĂ©but et sa fin.

        Algorithme nom_algorithme
        Constantes
            nom_constante = valeur
        Variables
            nom_variable : type
        Début
           instructions
           ...
        Fin
        

Cas particuliers : les sous-algorithmes. Fonctions et procédures

Les fonctions et procĂ©dures effectuent un certains nombres d’instructions, peuvant ĂȘtre utilisĂ©s autant de fois que necessaire, et dans autant d’algorithmes que necessaires.

Les avantages des sous-algorithmes sont :

Dans un algorithme, lorsque l’on utilise une fonctions ou une procĂ©dure, un nouveau bloc s’ajoute :


        Algorithme nom_algorithme
        Constantes
            nom_constante = valeur
        Variables
            nom_variable : type
        Fonctions
            liste des fonctions
        Procédures
            liste des procédures
        Début
           instructions
           ...
        Fin
        
Structure gĂ©nĂ©rale d’une fonction

Une fonction est un sous-algorithme qui permet d’exĂ©cuter des instructions en fonction d’un certain nombres de paramĂštre et re revoyer un rĂ©sultat Ă  l’algorithme qui y fait appel.


        Fonction nom_fonction (parametre_1 : type, parametre_2 : type, ...) : type_donnée_retournée
        Constantes
            nom_constante = valeur
        Variables
            nom_variable : type
        Début
           instructions
           ...
           Retourner valeur
        Fin
        
Appeler une fonction

Dans l’algorithme qui appelle la fonction, l’appel s’écrit :

  1. nom de la variable,
  2. flĂšche vers la gauche,
  3. nom de la fonction
  4. entre parenthĂšses, valeurs des paramĂštres

        ma_variable ← nom_fonction(valeur_parametre_1, valeur_parametre_2)
        

Les constantes

Les constantes sont des structures de donnĂ©es dont la valeur ne change pas au cours d’un algorithme.

La dĂ©claration d’une variable s’écrit dans la partie dĂ©clarative comme suit :

  1. nom de la constante
  2. égal
  3. valeur de la constante

Exemples de dĂ©claration d’une constante :


        CONSTANTE 
            pi = 3,14159265...
        

Les variables

Les variables sont des structures de donnĂ©es permettant le stockage temporaire d’une indormation, d’un rĂ©sultat, etc.

La dĂ©claration d’une variable s’écrit dans la partie dĂ©clarative comme suit :

  1. nom de la variable
  2. deux points
  3. type de la variable

Exemples de déclaration de variables :


        Variables 
            une_chaine : Chaine
            un_compteur : Entier
            un_reel : Réel
            un_booleen : Booleen
        

Au cours de l’algorithme, la valeur des variables peut-ĂȘtre modifiĂ©e Ă  n’importe quel moment dans le corps de l’algorithme.

L’assignation s’écrit :

  1. nom de la variable,
  2. flĂšche vers la gauche,
  3. valeur assignée

Exemple de variable assignées :


        Début
            une_chaine ← “lorem ipsum”
            un_compteur ← 2
            un_reel ← 2.7
            un_booleen  ← vrai
        Fin
        

Cas particulier : les variables de type tableaux

Les tableaux sont un type de variables permettant de stocker plusieurs données auquelles ont accÚde par leur position/leur index dans celui-ci.

Comme un tableau sur papier, ceux-ci peuvent avoir un nombre de colonnes plus ou moins conséquentes. On distingue deux familles de tableau : unidimentionnels (une colonne, plusieurs lignes) et multidimentionnels (plusieurs colonnes, plusieurs lignes)

La dĂ©claration d’une variable tableau s’écrit dans la partie dĂ©clarative comme suit :

  1. nom et dimensions du tableau
  2. deux points
  3. type du tableau

Exemples de déclaration de variables tableau :


        Variables
            tableau_unidimentionnels[1,10] : tableau de Entier
            tableau_multidimentionnels[1,10][1,10] : tableau de Entier
        

Dans l’exemple ci-dessus :

Le corps de l’algorithme

En algorithmique, on dispose d’un certain nombre d’instructions et d’opĂ©rateurs permettant d’indique l’action Ă  rĂ©aliser.

Liste des principales instructions et opérateurs algorithmique
Instruction Libelle
saisir pour demander la saisie manuelle d’une donnĂ©e
afficher afficher une donnée
← affecter une valeur
+ additionner
− soustraire
* multiplier
/ diviser
div division entiĂšre
mod modulo (reste de la division)
^ puissance mathématique
et fonction “et”
ou fonction “ou”
non fonction “non”
= égal
≠ diffĂ©rent
< inférieur
> supérieur
≀ infĂ©rieur ou Ă©gal
≄ supĂ©rieur ou Ă©gal
+ concatener (des Chaines de caractĂšres)

Les structures de contrĂŽle conditionnelles

Si, alors

Si la condition est vrai, alors on effetue l’instruction 1. Puis, on effectue l’instruction 2.


        Si condition = vrai Alors
            instruction_1
        Fin si

        instruction_2
        
Si, alors, sinon

Si la condition est vrai, alors on effetue l’instruction 1, sinon, on effectue l’instruction 2. Puis, on effectue l’instruction 3.


        Si condition = vrai Alors
            instruction_1
        Sinon
            instruction_2
        Fin si

        instruction_3
        
Si, alors, sinon, si, alors sinon

Si la condition est vrai, alors on effetue l’instruction 1, sinon, si le test 2 est vrai, alors on effectue l’instruction 2, sinon, on effectue l’instruction 3. Puis, on effectue l’instruction 4.


        Si condition = vrai Alors
            instruction_1
        Sinon si condition = vrai Alors
            instruction_2
        Sinon
            instruction_3
        Fin si

        instruction_4
        

Attention : Les conditions si sinon peuvent ĂȘtre imbriquĂ©es Ă  l’infini mais dĂ©grade la lisibilitĂ© et le fonctionnement de l’algorithme. Au dela de 3 cas logique, optez pour la structure selon.

Selon

        Selon variable_1 
            Cas valeur_1 :
                instruction_1
            Cas valeur_2 :
                instruction_2
            Cas autre :
                instruction_3
        Fin selon

        instruction_4
        

Les structures de contrÎle itératives

Tant que

Tant que la condition du test est respectĂ©e, on effectue l’instruction 1. Puis, on effectue l’instruction 2.


        Tant que condition = vrai
            instruction_1
        Fin tant que

        instruction_2
        
Jusqu’à

jusqu’à ce que la condition soit respectĂ©e, on effectue l’instruction 1. Puis, on effectue l’instruction 2


        RépÚte
            instruction_1
        Jusqu'Ă  condition = vrai

        instruction_2
        

Exemples d’algorithme du quotidien

Calculer le TTC d’un montant

L’algorithme ci-dessous permet de saisir un montant hors taxes et d’afficher le montant TTC pour une TVA de 20%.


        Algorithme TTC
        Constantes
            TVA = 0.2
        Variables
            montantHT : Réel
            montantTTC : Réel
        Début
            Afficher "Saisir le montant HT"
            Saisir montantHT
            montantTTC ← montantHT * ( 1 + TVA )
            Afficher montantTTC
        Fin