# Algorithmique/Introduction
## Qu'est-ce que l'algorithmique et les algorithmes ?

L'algorithmique est la question de savoir comment lire, écrire, évaluer et optimiser des algorithmes.
Un algorithme est une recette à suivre pour arriver à un certain résultat (et même à un résultat certain). Plus précisément :
Un algorithme est un ensemble d'instructions permettant de résoudre un problème, autrement dit de fournir un résultat à partir de données.
Dans le cadre de la programmation informatique, l'algorithme va donc nous permettre d'écrire de manière compréhensible par tous et de manière suffisamment proche des langages de programmation ce que l'ordinateur va devoir faire.
Il s'agit d’un niveau d'abstraction qui doit être indépendant du langage de programmation et permettre ainsi de faire ressortir uniquement la logique intrinsèque du programme.

## Pourquoi faire des algorithmes ?

Souvent, les programmeurs autodidactes vous affirmeront qu’ils s'en sont toujours sorti sans jamais faire d'algorithmique. Certes, il est possible et même assez courant de réaliser un programme sans se concentrer réellement dessus. Mais la rédaction préalable des algorithmes permet plusieurs choses :
* d’être compréhensible par tout informaticien même s'il ne connaît pas le langage du programme ;
* de rester focalisé sur la logique du programme et non sur les particularités du langage utilisé ;
* de vérifier la complexité du programme et donc de l'optimiser ;
* de faire ressortir de manière compréhensible les cas d’utilisations.

## Comment faire des algorithmes ?

Cela va être l'objectif des chapitres suivants de cette leçon. Mais pour donner un avant-goût, sachez que de nos jours les algorithmes sont rédigés dans un langage à mi-chemin entre le français et les langages de programmation, en pseudo-code :
En programmation, le pseudo-code est une façon de décrire un algorithme sans référence à un langage de programmation particulier.
L'écriture en pseudo-code permet souvent de bien prendre toute la mesure de la difficulté de l'implémentation de l'algorithme, et de développer une démarche structurée dans la construction de celui-ci. En effet, son aspect descriptif permet de décrire avec plus ou moins de détail l'algorithme, permettant de ce fait de commencer par une vision très large et de passer outre temporairement certains aspects complexes, ce que n'offre pas la programmation directe.
Au cours des prochains chapitres nous allons donc voir, en pseudo-code, les quatre principales familles d'instructions servant dans un algorithme :
* l'affectation de variable,
* la lecture / écriture,
* les tests,
* les boucles…
… et c’est tout ! Ces quatre familles d'instructions suffisent à venir à bout de n’importe quel algorithme !

## Y a-t-il une vie à côté des algorithmes ?

Nous ne voulions pas terminer cette introduction sans ajouter un petit mot sur la programmation non-algorithmique, qui existe et qui peut s'avérer utile dans certains cas.
Il s'agit d'une programmation dans laquelle on ne sait pas où on veut arriver et donc encore moins comment y aller ! Vous comprendrez donc bien que la notion d'algorithme n’est pas applicable dans ces cas-là.
Cela peut-être utile pour simuler des comportements qui ne sont composés que de réactions, de hasard ou d'adaptations.
| Sommaire | Variables |