edit cours von_neumann & ajout intro algorithmes
This commit is contained in:
191
algorithmes/README.md
Normal file
191
algorithmes/README.md
Normal file
@@ -0,0 +1,191 @@
|
||||
## Les algorithmes
|
||||
|
||||
|
||||
|
||||
### Un algorithme ? C’est quoi ?
|
||||
|
||||
Le mot algorithme signifie étymologiquement le nom d’un mathématicien arabe du moyen âge : ***Al-Khawarizm***i, il a été le premier a décrire une méthode claire pour la résolution d’équation en 825.
|
||||
|
||||
Un algorithme est une séquence finie d’instructions faite pour être exécutée dans le but de résoudre *un problème précis*, nous retiendrons qu’un algorithme est une séquence d’instructions exécutées de façon **logique** mais **non intelligente**.
|
||||
|
||||
- Logique parce que la personne (ou la machine) qui exécute les instructions sera capable de facilement comprendre et exécuter sans erreur ni ambigüité chacune des instructions.
|
||||
|
||||
- Non intelligente parce que la personne qui exécute l’algorithme n'aura qu'à suivre toutes les instructions, dans l'ordre pour arriver au résultat sans avoir a comprendre la méthode de solution.
|
||||
|
||||
|
||||
|
||||
---------
|
||||
|
||||
|
||||
|
||||
## Utilisation en informatique
|
||||
|
||||
- L’ordinateur n’est pas intelligent, pour résoudre un problème, vous devez lui donner des successions claires d’instructions à suivre.
|
||||
|
||||
Nous nous intéresserons à la façon de combiner des instructions pour résoudre un problème indépendamment des langages de programmation :
|
||||
|
||||
**Objectif : décomposer des calculs compliqués en successions d’étapes simples.**
|
||||
|
||||
|
||||
|
||||
----------
|
||||
|
||||
## Intérêt de l'algorithme
|
||||
|
||||
- Un algorithme sert à transmettre un savoir faire.
|
||||
- Il décrit clairement les étapes à suivre pour réaliser un travail.
|
||||
- Il permet d'expliciter clairement les idées de solution d'un problème indépendamment d'un langage de programmation
|
||||
|
||||
|
||||
|
||||
-----------
|
||||
|
||||
## Quand l'utiliser ?
|
||||
|
||||
**Lorsque l’on doit traiter de l’information**:
|
||||
|
||||
- Tâches humaines (issues d’une interface)
|
||||
- Tâches automatiques (issues de capteurs)
|
||||
- Tâches ou traitement par lot (issues d’une base de données)
|
||||
|
||||
**D’un point de vue « professionnel »** :
|
||||
|
||||
- Etablissement d’un cahier des charges
|
||||
- Tâches/traitement
|
||||
- Acteurs
|
||||
- Interfaces
|
||||
|
||||
-----------
|
||||
|
||||
|
||||
|
||||
## Démarche
|
||||
|
||||
**Analyse du cahier des charges (avec le client, les acteurs du futur produit) :**
|
||||
|
||||
- Réflexion des étapes de la programmation: **ce que doit faire le programme**
|
||||
|
||||
- Pseudo-code
|
||||
|
||||
- SysML
|
||||
|
||||
|
||||
|
||||
**Programmation**
|
||||
|
||||
Réflexions sur l’environnement:
|
||||
|
||||
- Quel système ?
|
||||
|
||||
- À quelle broche brancher telles ou telles commandes …
|
||||
|
||||
- Utilisation d’un langage de programmation :
|
||||
- Interprété ? Compilé ?
|
||||
- Fiabilité ?
|
||||
- Disponibilité ?
|
||||
|
||||
|
||||
|
||||
----------------------
|
||||
|
||||
## Lien avec la programmation ?
|
||||
|
||||
**Ecriture du programme** :
|
||||
|
||||
À partir du cahier charge fonctionnel (CdCf), le programmeur écrit le programme sous forme *d'algorithme*.
|
||||
|
||||
**Le codage** :
|
||||
|
||||
À partir de l’algorithme le codeur va transcoder l’algorithme en
|
||||
|
||||
- un langage littéral (syntaxe) : C, C++, Python, Java, Assembleur, etc…
|
||||
|
||||
- Un langage graphique: Flowcode, mBlock, Scratch, etc…
|
||||
|
||||
*À ce stade le programme peut-être **simulé** afin de vérifier que son exécution est conforme.*
|
||||
|
||||
|
||||
|
||||
---------
|
||||
|
||||
## Règles
|
||||
|
||||
Un algorithme est un ensemble de règles à respecter :
|
||||
|
||||
Processus défini par une succession **finie, ordonnée** dans le **temps**, d’opérations d’un **acteur unique** appliquées à un nombre **fini** de données conduisant en un nombre **fini** d’étapes à un résultat défini quelles que soient les valeurs des données dans leurs domaines de définition.
|
||||
|
||||
Représentation:
|
||||
|
||||
- Algorithme
|
||||
- Littéral: PseudoCode
|
||||
- Graphique : Algorigramme
|
||||
|
||||
|
||||
|
||||
***Règle* *0***
|
||||
|
||||
- **L’algorithmique est faite pour décrire l’aspect temporel des processus**
|
||||
- **Un algorithme sans fin ne peut représenter qu’un programme mal fait et planté.**
|
||||
- **Deux événements représentés sur deux lignes (cellules graphiques) consécutives se succèdent strictement dans le temps.**
|
||||
|
||||
|
||||
|
||||
***Règle 1***
|
||||
|
||||
- **Deux événements simultanés doivent être mentionnés dans la même ligne d’algorithme, ou dans le même rectangle d’algorigramme**
|
||||
|
||||
|
||||
|
||||
***Règle 2***
|
||||
|
||||
- **Les** **mots clés** **de l’algorithmique (il n’y en n’a même pas 20, un minimum de 12 suffisent) s’emploient toujours soulignés**
|
||||
|
||||
|
||||
|
||||
**Règle 3**
|
||||
|
||||
**Les couples suivants fonctionnent comme des parenthèses algébriques** **et sont toujours** **reliés par des traits verticaux de validation** **:**
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
**Règle 4**
|
||||
|
||||
- **Le signe « = » a toujours une valeur de test booléen**
|
||||
|
||||
- **l’affectation est toujours représentée** **par son signe «** **prend pour valeur »** <-----
|
||||
|
||||
- **Ce qui n’est plus vrai lors de l’utilisation d’un langage de programmation**
|
||||
|
||||
**Règle 5**
|
||||
|
||||
- **Tout algorithme a un début et une fin**
|
||||
|
||||
- **Un processus « permanent » a toujours une boucle principale qui n’atteint sa fin que sur rupture des conditions normales de fonctionnement.**
|
||||
|
||||
**Règle 6**
|
||||
|
||||
- **Tout algorithme peut se représenter en** **algorigramme** **et réciproquement**
|
||||
|
||||
**Règle 7**
|
||||
|
||||
- **Les deux formes de boucle légitimes ne sont pas équivalentes.**
|
||||
- Les événements de la boucle **répéter** sont toujours exécutés au **moins une fois** alors que la boucle **tant que** peut très bien **ne jamais avoir lieu**.
|
||||
|
||||
**Règle 8**
|
||||
|
||||
- **Un « si » ne contrôle jamais une boucle ! ! !**
|
||||
- Ce sont les structures **« tant que »** et **« répéter ...jusqu’à » qui contrôlent les boucles** légitimes
|
||||
|
||||
**Règle 9**
|
||||
|
||||
- **Une boucle** **algorithmique** **est toujours exécutée un nombre entier de fois**
|
||||
|
||||
**Règle 10** :
|
||||
|
||||
**Deux boucles** **peuvent être** **successives** **ou** **imbriquées, jamais enchevêtrées**
|
||||
|
||||
**Règle 11**
|
||||
|
||||
- **Tout état physique mémoire (bascule, charge de condensateur, état d’un commutateur...) se représente par une variable**
|
||||
BIN
algorithmes/assets/couples.png
Normal file
BIN
algorithmes/assets/couples.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
Reference in New Issue
Block a user