Introduction - Pierre Rainero

publicité
Algorithme et programmation :
Introduction :
Qu'est-ce qu'un algorithme :
Le mot « algorithme » vient d'un astronome indien qui a écrit un ouvrage sur des procédés de
calculs.
Al Khorizmi → Algorithme = procédé de calculs
Un algorithme décrit des actions que l'on veut voir exécutées par une machine pour obtenir des
résultats à partir de données.
Il peut être de différents types : numériques, textuels, graphiques, etc...
Un algorithme est donc une spécification d'une suite d'actions élémentaires (= primitives) pour
réaliser un traitement.
Un programme est un ensemble de déclarations (=instructions) dans un langage donné (C, C++,
Java,...) sur une machine l'utilisant pour exécuter un certain travail.
Bien analyser un problème :
Analyser un problème = Bien comprendre ce que le client souhaite et définir convenablement les
différentes étapes.
Il faut mettre un évidence tout les objets (=trucks) que l'on va manipuler, ils sont supposés connus
au départ + les objets que l'on espère obtenir.
Il faut ensuite décrire les traitements effectués.
• L'analyse descendante : correspond au fait de décomposer un problème donné en sousproblèmes plus simples à résoudre.
Et ça jusqu' à obtenir des problèmes élémentaires.
• Démarche descendante : - Décomposer en sous-problème
- Résoudre chaque sous-problème
- Combiner les solutions
La codification (ou codage) : permet d'avoir un programme écrit dans un langage compréhensible
par un ordinateur (donc exécutable). → notion de syntaxe
Lors de l'exécution on peut obtenir :
– Les résultats sont ceux attendus
– Erreurs syntaxiques (=pas de résultats)
modifier le programme
– Erreurs sémantiques (=résultats différents de ceux
escomptés)
modifier l'algorithme
Sans algorithme il n'y a pas de programme, il est écrit dans un langage indépendant de celui du
programme. On utilise un pseudo-langage ou LDA (Langage de Description d'Algorithme).
On considère alors une machine abstraite qui comprend le LDA et peut effectuer un certain nombre
d'actions.
Ce pseudo-langage doit être indépendant de toute machine (soit de tout langage lié),
compréhensible de tous (=universel) et suivre un ensemble de règles qui définissent :
1. Les objets manipulés (variables, etc...)
2. La façon dont on les manipulent (=opérateurs)
3. La façon dont on écrit les instructions, expressions, affectations
4. La façon dont on communique avec la machine et dont elle communique avec l'utilisateur,
les entrées-sorties
Un processeur est une entité capable de comprendre les opérations élémentaires énoncées et de les
exécuter.
Un processus de calculs (ou calculs) est une exécution d'un algorithme, soit une réalisation
particulière d'un enchaînement d'étapes élémentaires.
Une description finie peut entraîner l'exécution infinie d'étapes élémentaires.
Un programme est indissociable de la machine capable de le décoder, son langage est souvent peu
lisible.
Concepts de base :
I / Objets manipulés :
• Les littéraux : des nombres, des mots,...
exemple : 33, 45.2, " bonjours ", 'c',...
• Les entités nommées : 1 : Constantes = données dont la valeur ne peut pas être modifiée
2 : Variables = données dont la valeur peut être modifiée par
affectation ou par lecture
Tout les objets sont stockés dans la mémoire de l'ordinateur.
Les variables ont : Un nom ou identifiant → écrit en minuscule avec les articulations marquées par
des majuscules. Exemple : nombre, positionElément,...
Une valeur
Un type qui caractérise l'ensemble des valeurs et des opérations possibles.
Les constantes ont : Un nom ou identifiant → écrit en majuscules avec les articulations marquées
par des _. Exemple : PI, TAUX_TVA,...
Une valeur qui ne peut pas être changée et qui est spécifiée à la déclaration
(=début de l'algorithme).
II / Types :
Domaine = ensemble de valeurs
Type = Domaine + ensemble d'opérations applicables sur ces valeurs
exemple : « entier » désigne l'ensemble des entiers relatifs Z (presque), muni d'opérations
arithmétiques usuelles (+, -, *, etc...). A chaque variable on doit associer un type qu'on ne pourra
plus changer.
• Entier : Tous les entiers possibles
Opérations : +, -, *, div, mod, **
exemples : 12 div 3 = 4, 12 mod 3 = 0, 13 div 3 = 4, 13 mod 3 = 1
Comparaison : ==, !=, <, <=, >, >=
• Réels : Tous les réels possibles
Opérations : +, -, *, /
Comparaison : ==, !=, <, <=, >, >=
• Booléen : Deux valeurs VRAI ou FAUX (ou 0 et 1)
Opérations : ET ( ), OU ( ), NON ( )
Tables de vérité :
Vrai
Faux
Vrai
Faux
Faux
Vrai
Vrai
Faux
ET
Faux
Faux
Vrai
Faux
OU
Vrai
Vrai
Vrai
Faux
Involution :
a= a
NON NON a = a
Loi de Morgan :
(a b)= a b
NON (a OU b) = NON a ET NON b
(a b)= a b
NON (a ET b) = NON a OU NON b
Distributivité des opérateurs :
a (b c)=(a b) (a c)
a ET (b OU c) = (a ET b) OU (a ET c)
a (b c)=(a b) (a c)
a OU (b ET c) = (a OU b) ET (a OU c)
NON
Vrai
Faux
Faux
Vrai
(le contraire du contraire)
III / Environnements
Formalisation de l'environnement d'un problème :
L'environnement d'un algorithme doit être défini par l'ensemble des objets algorithmiques
permettant de manipuler les données et les résultats d'un problème par des actions primitives.
Nom
Rôle
Type
IV / Actions primitives (Algorithme)
Un algorithme est composé d'une en-tête et d'un corps.
L'en-tête spécifie :
– le nom : algorithme : nomAlgo
– l'utilité : rôle : calcul de....
– l'environnement : les objets utiles à l'algorithme
Le corps est composé :
– Du mot clef : Début
– D'une suite d'instructions (=expressions)
indentées (=alignées)
– Du mot clef : Fin
Affecter (←) : Permet de donner pour la première fois une valeur à une variable ou de modifier la
valeur déjà contenue dans une variable
V←E
E (la valeur à affecter) peut-être une constante, le nom d'une autre variable, une expression
arithmétique décrivant un calcul à effectuer. V←4
V←E
V←5*E+10
On ne peut affecter que des objets d'un même type
Téléchargement