edit cours von_neumann & ajout intro algorithmes

This commit is contained in:
2022-03-10 23:09:03 +01:00
parent a7be049200
commit c65579c897
3 changed files with 193 additions and 2 deletions

191
algorithmes/README.md Normal file
View File

@@ -0,0 +1,191 @@
## Les algorithmes
### Un algorithme ? Cest quoi ?
Le mot algorithme signifie étymologiquement le nom dun 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 dinstructions faite pour être exécutée dans le but de résoudre *un problème précis*, nous retiendrons quun algorithme est une séquence dinstructions 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 lalgorithme 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
- Lordinateur nest pas intelligent, pour résoudre un problème, vous devez lui donner des successions claires dinstructions à 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 lon doit traiter de linformation**:
- Tâches humaines (issues dune interface)
- Tâches automatiques (issues de capteurs)
- Tâches ou traitement par lot (issues dune base de données)
**Dun point de vue « professionnel »** :
- Etablissement dun 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 lenvironnement:
- –Quel système ?
- À quelle broche brancher telles ou telles commandes …
- –Utilisation dun 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 lalgorithme le codeur va transcoder lalgorithme 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**, dopérations dun **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***
- **Lalgorithmique est faite pour décrire laspect temporel des processus**
- **Un algorithme sans fin ne peut représenter quun 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 dalgorithme, ou dans le même rectangle dalgorigramme**
***Règle 2***
- **Les** **mots clés** **de lalgorithmique (il ny en na même pas 20, un minimum de 12 suffisent) semploient 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** **:**
![couples](assets/couples.png)
**Règle 4**
- **Le signe « = » a toujours une valeur de test booléen**
- **laffectation est toujours représentée** **par son signe «** **prend pour valeur »** <-----
- **Ce qui nest plus vrai lors de lutilisation dun langage de programmation**
**Règle 5**
- **Tout algorithme a un début et une fin**
- **Un processus « permanent » a toujours une boucle principale qui natteint 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 dun commutateur...) se représente par une variable**

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB