Files
1ereNSI/algorithmes/README.md

215 lines
6.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Les algorithmes
### Un algorithme ? Cest quoi ?
Le mot algorithme signifie étymologiquement le nom dun mathématicien arabe du moyen âge : ***Al-Khawarizmi***, 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**
## Pour faire bref
![algorigramme](assets/algorigramme.png)
![1](assets/1.png)
![2](assets/2.png)
--------
Auteur : Florian Mathieu
Licence CC BY NC
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Licence Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a> <br />Ce cours est mis à disposition selon les termes de la <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International</a>.