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 |
@@ -20,7 +20,7 @@ Le vrai problème de cette machine de Turing est qu'elle ne peut faire qu'une ch
|
|||||||
|
|
||||||
Turing imagine alors écrire sur le ruban la procédure à suivre : c'est le début de la **virtualisation** : les programmes deviennent des données comme les autres et une unique machine peut devenir **universelle** et réaliser n'importe quel calcul.
|
Turing imagine alors écrire sur le ruban la procédure à suivre : c'est le début de la **virtualisation** : les programmes deviennent des données comme les autres et une unique machine peut devenir **universelle** et réaliser n'importe quel calcul.
|
||||||
|
|
||||||
En 1945, **[Von Neuman](https://fr.wikipedia.org/wiki/John_von_Neumann)**, invente un modèle qui définit un schéma d'ordinateur que l'on utilie toujours aujourd'hui : une structure de stockage unique pour conserver à la fois les instructions et les données demandées ou produites par le calcul.
|
En 1945, **[Von Neumann](https://fr.wikipedia.org/wiki/John_von_Neumann)**, invente un modèle qui définit un schéma d'ordinateur que l'on utilie toujours aujourd'hui : une structure de stockage unique pour conserver à la fois les instructions et les données demandées ou produites par le calcul.
|
||||||
|
|
||||||
> Avec l'arrivée des odinateurs quantiques, ce modèle est probablement voué à disparaître prochainement.
|
> Avec l'arrivée des odinateurs quantiques, ce modèle est probablement voué à disparaître prochainement.
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ On peut également citer les [bus](https://fr.wikipedia.org/wiki/Bus_informatiqu
|
|||||||
|
|
||||||
### Spécificités
|
### Spécificités
|
||||||
|
|
||||||
Les échanges entre la mémoire et les registres du processeur se dont via des bus selon une chronologie décidée par l'horloge et suivant le type d'échange.
|
Les échanges entre la mémoire et les registres du processeur se font via des bus selon une chronologie décidée par l'horloge et suivant le type d'échange.
|
||||||
|
|
||||||
Tous les programmes sont enregistrés dans la mémoire désormais.
|
Tous les programmes sont enregistrés dans la mémoire désormais.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user