Cours d`algorithmique - e

Transcription

Cours d`algorithmique - e
Cours d’algorithmique et
programmation
Chapitre 1 : Introduction
I. Algorithme / programme
II. Fonctionnement d’un ordinateur
III. Démarche de conception
I.
Algorithme / programme
Algorithme ?
Suite ordonnée d’actions à réaliser pour
aboutir à la résolution d’un problème, pour
obtenir un résultat.
Programmation ?
Traduction des algorithmes en instructions
que pourra «comprendre » et exécuter un
ordinateur.
Exemples d’algorithmes :
• dans la vie courante
- une recette de cuisine, chercher un mot dans le dico …
•
les premiers algos
-
Euclide (~ 300 av. J.C !) : calcul du PGCD de 2 entiers
-
Al Khuwarizmi (IXème) : résolution équation second degrés
-
Ada Lavelace (XIXème) : 1er algo destiné à être exécutée par une
machine (calculs des nbres de Bernouilli)
• quelques algos classiques en info :
- trouver le min/le max de n valeurs
- trier une suite de n valeurs
- rechercher une valeur dans un ensemble de n valeurs
Ex. d’algorithme : calcul du PGCD de 2 entiers positifs
par la méthode des différences successives
• Postulats (mathématiques) :
Si a et b sont 2 entiers positifs tels que a>=b : PGCD(a,b)= PGCD(b,a-b)
Si a est un entier PGCD(a,0)=a
début
• Algorithme :
On a 2 entiers
test
Boucle :
on recommence
Faux
sont-ils
égaux ?
Vrai
On calcule la différence du plus
grand et du plus petit
Cet entier est le PGCD recherché
On remplace le plus grand par
cette différence
fin
Informatique ?
L’informatique est la science du traitement
automatique de l’information.
Algorithme ?
Suite de traitements (calculs, tests …) à
effectuer sur des données (informations) pour
obtenir un résultat.
Programme ?
Ensemble
structuré
d’instructions
de
traitements de données à faire réaliser par un
matériel informatique.
II. Fonctionnement d’un ordinateur
Système informatique (ordinateur) :
• Ensemble de dispositifs matériels et logiciels
permettant de :
- Stocker et restituer des données
- Transmettre des données
- Traiter des données (calculs, tests …)
utilisateur
• 2 niveaux :
- Matériel
- Logiciel
(programmes )
services
Navigateur
Bloc-notes
Word
Logiciels
services
Matériel
Processeur
Mémoire vive
Disque dur
L'ordinateur : matériel
• Stockage de l'information
- Mémoire vive (RAM) :
- programmes en cours d'exécution
- données temporaires utilisées par les programmes en cours
d'exécution
- Disque dur et/ou mémoire flash :
- programmes installés
- données enregistrées
• Transmission de l'information
- La carte mère (pistes), les bus, les ports …
• Traitement de l'information
- Le processeur
- Coprocesseurs ( carte graphique ... )
Architecture de von Neumann
La machine :
que peut-elle « comprendre » ?
Un ordinateur est un assemblage de composants
électroniques : le courant passe ou ne passe pas.
 Le seul langage que peut « comprendre » un
ordinateur est le langage binaire (des suites de 0
et de 1)
• Toutes les données stockées en mémoire sont
codées en binaire
• Toutes les instructions que devra exécuter le
processeur devront au préalable avoir été
traduites en langage binaire.
La machine : que sait-elle faire?
Stocker et aller chercher une information en
mémoire et faire quelques calculs simples …
Jeu d’ instructions de base d’un microprocesseur :
- Les opérations arithmétiques (+,- ,,/ …)
- Les opérations logiques ( et, ou, non …)
- les instructions de contrôles (branchements conditionnels,
boucles, appels de fonctions …)
- les instructions de transferts de données
- Les instructions d’entrée-sortie
III. Démarche de conception d’un logiciel
1. Etude du cahier des charges (CDC)
 Objectifs : Pour quoi faire ?
 Pour qui ? (utilisateurs ?)
2. Les données : Identifier les données principales
•
•
sur lesquelles s’effectueront les traitements (données en entrée)
les résultats (données en sortie)
3. Les traitements
• Cas d’utilisations / scénarios
• Analyse chronologique descendante
 Quels traitements sur quelles données ?
• Algorithmes / organigrammes
4. L’interface (IHM)
Programmer : de l’algorithme au code exécutable (langages compilés)
Que faire ?
Problème à résoudre
Objectifs à atteindre
Comment ?
réfléchir, analyser
Conception des algorithmes.
Pseudo-code/Organigrammes
choisir un langage
et coder !
Programmation dans un
langage de haut niveau
 Code source (monProg.c)
compiler
Traduction en langage
machine
 Code exécutable
(monProg.exe)
sur « papier »
En utilisant un
éditeur ou un
logiciel de
développement
En utilisant un
compilateur (logiciel
de compilation)
(gcc)
qui bosse ?
vous
le programmeur
(vous)
la machine
Le programme est prêt. Vous pouvez
le lancer comme n’importe quelle
appli !
Qu’est-ce qu’un bon algorithme ?
• validité : réalise-t-il exactement la tâche pour
laquelle il a été conçu ?
• robustesse : toutes les conditions
exceptionnelles ou anormales d’utilisation
ont-elles été envisagées ?
• efficacité  charge mémoire, complexité
• Ré-utilisabilité