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 :
- Ouvrir Ă la premiĂšre lettre du mot rechercher.
- Lire le premier mot de la page.
- VĂ©rifier si le mot lu est avant notre mot selon lâordre alphabĂ©tique.
- Si celui-ci se situe avant le mot recherchĂ©, lire le mot suivant et recommencer lâĂ©tape 3.
- 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 :
- les variables
- le mot en cours de lecture.
- le mot que lâon recherche.
- les tableaux
- les mots et leur définitions.
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 :
- Les conditions
- VĂ©rifier si le mot lu est avant notre mot selon lâordre alphabĂ©tique
- Si celui-ci se situe avant le mot recherché, lire le mot suivant
- les boucles
- Lire les mots jusquâĂ ce que le mot lu corresponde au mot recherchĂ©
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 :
- LâentĂȘte, qui dĂ©finie le type dâalgorithme et son nom
- La partie déclarative qui définie les structures de données constantes et variables
- 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 :
- lâamĂ©lioration de la lisibilitĂ© de lâalgorithme principal,
- la décomposition de problÚmes complexes en sous-problÚmes plus simple à résoudre,
- la facilitation de la correction des algorithmes en cas dâerreur.
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 :
- nom de la variable,
- flĂšche vers la gauche,
- nom de la fonction
- 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 :
- nom de la constante
- égal
- 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 :
- nom de la variable
- deux points
- 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 :
- nom de la variable,
- flĂšche vers la gauche,
- 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 :
- nom et dimensions du tableau
- deux points
- 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 :
- la variable
tableau_unidimentionnels[1,10]est un tableau dâune colonne et 10 lignes. - la variable
tableau_multidimentionnels[1,10][1,10]est un tableau de 10 colonnes et 10 lignes.
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.
| 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