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 sous-
problè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é :
ET OU NON
Vrai Faux Faux Vrai Vrai Faux
Faux Vrai Faux Vrai Faux Vrai
Vrai Vrai Vrai Vrai
Faux Faux Faux Faux
Involution :
a = a NON NON a = a (le contraire du contraire)
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)
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 VE
E (la valeur à affecter) peut-être une constante, le nom d'une autre variable, une expression
arithmétique décrivant un calcul à effectuer. V4 VE V5*E+10
On ne peut affecter que des objets d'un même type
1 / 3 100%