Introduction Algorithmique
Introduction Algorithmique
Introduction Algorithmique
L’ALGORITHMIQUE
PLAN
Introduction
Notion d’Algorithme et d’action primitive.
Structure d’un algorithme.
Différentes parties d’un algorithme
Les types standards et opérations appropriées.
Actions simples et structures de contrôle
Les types complexes (tableaux et
enregistrements).
OBJECTIFS DU COURS
Source: www.lesfoodies.com
NOTION D’ALGORITHME ET D’ACTION
PRIMITIVE
Un algorithme en informatique est un procédé
de calcul qui permet de résoudre un problème
donné. Ce procédé est une suite d’étapes à
effectuer dans un ordre donné afin d’aboutir au
résultat attendu.
Une action est une étape de l'algorithme. C'est un
événement de durée finie qui modifie
l'environnement (changement des valeurs des
variables, résultat d’une expression, …).
Une action primitive est une action exécutée sans
aucune information complémentaire. Exemple:
A45
NOTION D’ALGORITHME ET D’ACTION
PRIMITIVE
Un algorithme est une suite d’actions primitives,
qui une fois exécutées réalisera un travail bien
précis.
Un algorithme doit tenir compte de tous les cas
possibles (le cas général et les cas particuliers).
Il contient toujours un nombre fini d'actions.
Il est souvent répétitif (il contient un traitement qui
se répète).
Il est indépendant des langages de
programmation et des matériels informatiques.
Notion d’algorithme et d’action primitive
POURQUOI UN ALGORITHME?
Un algorithme utilise un formalisme (ensemble de mots,
de structures, de règles) nommé LDA (Langage de
description d’algorithme). dont le but est de:
offrir un langage commun compris par tous ne
dépendant pas d’un langage de programmation
Facilite la communication de la solution d’un problème.
Assurer une meilleure conception d’une solution avant son
passage à la programmation qui nécessite des
ressources (machine, compilateur, …)
Préparer sa traduction dans un langage de
programmation (C, C++, java) car le passage d’un
langage de programmation à un autre n’est pas assez
simple.
Notion d’algorithme et d’action primitive
DÉMARCHE DE RÉSOLUTION D’UN PROBLÈME
POUR OBTENIR LES RÉSULTATS ATTENDUS, ON DOIT SUIVRE LES ÉTAPES:
Enoncé bien clair du problème posé.
Faire une analyse détaillée qui tient en compte des cas
particuliers.
Ecrire l’algorithme.
Constantes*/
Type nom_type… /*Déclaration de nouveaux types */
Var var1,var2:type1, var3:type2 /*Déclaration des
variables */
Procedure ou fonction …/* Déclaration des sous-algorithmes */
Des commentaires sont insérés pour donner une
explication textuelle à certaines actions dont on peut
Corps
fsi
Sinon écrire (‘La solution est:’, -b/a)
Fsi Affichage de la
Fin solution attendue
Fin de l’algorithme
STRUCTURE D’UN ALGORITHME
Différentes parties d’un algorithme
Algorithme rattrapage
Const note_elimin=7 /* note éliminatoire fixée à
7*/
Var moyenne:reel
Début
Lire (moyenne)
Si moyenne <note_elimin
Alors écrire (‘l.etudiant refait le module’)
Fsi
Fin algorithme
Structure d’un algorithme
Déclaration des variables
Les variables sont des zones mémoires contenant les
données manipulées par un programme ayant des
adresses mémoire pour pouvoir les atteindre. Le contenu
d’une variable peut changer une à plusieurs fois.
Les variables sont nommées afin d’être utilisées dans un
algorithme et doivent être définies ainsi que leurs types
dans la partie déclaration.
Exemple:
Var A,B: entier, V: booleen, Quotient: reel
Ici nous avons déclaré pour les besoins de notre algorithme: 4
variables (deux de type entier, une de type booléen et une
de type réel).
Structure d’un algorithme
Différentes parties d’un algorithme
Déclaration des variables
Un nom d’une variable (identifiant) doit être:
Porteur de sens pour pouvoir comprendre facilement
l’algorithme en cours de sa lecture ou de son
déroulement (notamment pour les algorithmes
compliqués et longs).
Il doit toujours être présent dans la partie déclaration
des variables (avant de l’utiliser).
Il ne doit pas commencer par un chiffre.
Il ne doit pas contenir un symbole sauf la caractère
souligné (_).
Il doit être différent des mots réservés utilisés dans la
structure d’un algorithme (si, sinon, pour, tant que, var,
const, type, entier, booleen,…)
Structure d’un algorithme
Les types standards et opérations appropriées.
Le type de variable définit les valeurs qu’elle peut
contenir.
Les types standards sont:
Ecrire(S,R,V)
7.466 2 false
Fin algorithme
Structure d’un algorithme
Un algorithme est composé de deux types
d’éléments:
Les actions simples ou les actions de traitement
de l’information proprement dit.
Les structures de contrôle qui expriment
l’organisation logique du programme et
commandent le déroulement du programme
dans le temps. Ces structures sont:
l’enchaînement,
la conditionnelle et l’alternative, et
la répétitive.
ACTIONS SIMPLES ET STRUCTURES DE
CONTRÔLE
Les actions simples comprennent:
L’affectation
Les actions d’entrée/sortie ou lecture et écriture.
Les calculs élémentaires
Et les appels de sous programmes (procédures et
fonctions).
Exemples d’actions simples:
AB
Produit(A,B)
AB*C-E
Lire (A)
ACTIONS SIMPLES ET STRUCTURES DE
CONTRÔLE
L’affectation est l’opération qui permet de stocker un contenu
dans une variable (zone mémoire) à un instant donné. On peut
affecter à une variable une valeur simple, le contenu d’une
autre variable ou le contenu d’une expression. Elle est noté (
ou =)
Exemples:
A5 (ou A=5) /*Affectation d’une valeur*/
AB /*Affectation du contenu d’une variable*/
A(B+C)/10 /*Affectation du résultat d’une expression*/
Ce qui est affecté à la variable doit être de même type que cette
dernière.
Si A est de type entier, A10.5 est considéré comme une erreur.
ACTIONS SIMPLES ET STRUCTURES DE
CONTRÔLE
Une action de lecture permet de stocker une
valeur dans une variable. Cette valeur est
donnée par l’utilisateur en utilisant un organe
d’entrée. Si l’exécution est répétée , la valeur
peut être changée.
Exemple:
Lire (A,B)
CA+B
Si l’utilisateur a introduit 5 pour A puis 2 pour B
alors C aura 7 comme valeur.
ACTIONS SIMPLES ET STRUCTURES DE
CONTRÔLE
Une action d’écriture permet d’afficher un message,
le contenu d’une variable, ou le contenu d’une
expression sur un organe de sortie (écran,
imprimante,… ).
Exemple:
Lire (A,B)
CA+B
Écrire (‘La somme de A et de B est:’, C)
Action 1 Exemple:
Action 2 Lire (A)
B A**4
..... CB*100
Action n Ecrire (A,B,C)
ACTIONS SIMPLES ET STRUCTURES DE
CONTRÔLE
Les structures conditionnelles et alternatives
Elles permettent d’effectuer un traitement
conditionnel (un choix de décision). On
distingue:
La structure simple (choix unique) ou
conditionnelle
La structure à double choix ou alternative.
Le choix multiple (à plusieurs alternatives)
ACTIONS SIMPLES ET STRUCTURES DE
CONTRÔLE
La structure Si condition logique
conditionnelle alors action A
La structure simple Fsi
(choix unique): Dans
ce cas une ou ----------OU ---------
plusieurs actions sont Si condition logique
exécutées si une alors
condition est vraie. action A
Exemple: Action B
Action C
Si A<B alors AB
…..
Fsi
Fsi
ACTIONS SIMPLES ET STRUCTURES DE
CONTRÔLE
Les structures alternatives
Si condition logique
La structure à double alors action A
choix: On exécute une Sinon action B
action dans le cas où la Fsi
condition est vraie. Si elle ----------OU ---------
est fausse, on exécute une Si condition logique
autre. alors action A
Exemple: Si A<B action B
…..
alors CB-A Sinon action x
sinon CA-B action y
……
Fsi
Fsi
ACTIONS SIMPLES ET STRUCTURES DE
CONTRÔLE
Les structures alternatives
Le choix multiple: Selon <expression ou variable>
Plusieurs conditions qui valeur 1: Action 1
mènent chacune à une ou valeur 2: Action 2
plusieurs actions. valeur 3: Action 3
Exemple: Lire (choix) …..
Selon choix Fin selon
1: P’Rouge’
Remarque :
2: P ‘Vert’
Selon la condition, on peut exécuter
3: P ‘Blanc’ une ou plusieurs actions.
Fin selon
ACTIONS SIMPLES ET STRUCTURES DE
CONTRÔLE
Exercice sur l’alternative: Soit à afficher la plus
petite valeur entre deux nombres entiers
Algorithme plus_petit
Var A,B, Min:entier
Début
Écrire (‘Donnez deux valeurs entières à comparer’)
Lire(A,B)
Si A<B alors MinA
Sinon minB
Fsi /*Fsi n’est pas obligatoire s’il y’a une seule
action*/
Ecrire (‘la plus petite valeur entre:’, A, ‘et’,B, ‘est:’, min)
Fin Algorithme
ACTIONS SIMPLES ET STRUCTURES DE
CONTRÔLE
Les Structures alternatives
Soient C1, C2 deux conditions, et A1, A2 deux
actions (ou groupe d’actions), Il est utile de savoir
que:
Si (C1 et C2) alors A1 Si C1 alors si C2 alors
A1
Exemple
Si C1 alors A1
sinon si C2
alors A1 Si A<0 alors écrire (‘A est non nul’)
Sinon A2 sinon si A>0 alors écrire (‘A est non nul’)
Sinon écrire (‘A est nul’)
Si A<0 alors
si B<0
Si C1 alors si C2 alors alors écrire (‘somme est de signe négatif’)
A1 sinon écrire(‘la somme dépend du signe de
sinon A2 la plus grande valeur
absolue’)
Fsi Fsi
Sinon A2 Sinon écrire(‘la somme dépend du signe de la
plus grande valeur absolue’)
Fsi Fsi
Exercice
AFFICHER LE RÉSULTAT ADMIS OU REFAIT L’ANNÉE SELON LA
MOYENNE
Algorithme passage
Var moy:reel
Début
Écrire (‘Donnez la moyenne de l’étudiant’)
Lire(moy)
Si moy>=10 alors Ecrire (‘L étudiant admis en année
suivante)
Sinon Ecrire (‘L Etudiant refait lannée en cours’)
Fsi
Fin Algorithme
Actions simples et structures de contrôle
LES BOUCLES
Répéter
Action 1
Action 2
……
Jusqu’à (condition d’arrêt vérifiée)
Actions simples et structures de contrôle
LA BOUCLE RÉPÉTER (EXEMPLE)
Algorithme qui affiche ‘Bonjour’ jusqu’à ce que
l’utilisateur ne le souhaite plus.
Algorithme Bonjour
Var rep:caractère
Début
Répéter
Écrire (‘Bonjour’)
Écrire (‘voulez –vous d’un autre bonjour : O/N’)
Lire(rep)
Jusqu’à (rep=‘N’)
Fin algorithme
Les Types complexes
LES TABLEAUX
Supposons que nous ayons besoin de conserver les notes
de vingt étudiants de façon qu’on puisse faire différents
traitements sur ces notes et accessibles simultanément.
Solution: Nous pouvons déclarer 20 variables N1,N2,
…,N20 pour conserver ces notes.
Inconvénient 1: Si le nombre d’étudiants est trop élevé
(exemple 100 ou plus), nous devrions déclarer autant de
variables que d’étudiants!!!
Inconvénient 2: Il n’existe pas un lien entre les variables
pour pouvoir faire tous les traitements possibles tel que
le tri qui est un traitement très important en
algorithmique.
Les Types complexes
LES TABLEAUX
La solution au problème précédent est de définir un
vecteur (tableau à une dimension) qui porte un seul nom
exemple « note » où les différentes notes sont
accessibles l’une après l’autre grâce à un indice.
14. 10. 11. 6.5 5.5 15. 12. 12. 20. 13.
5 0 5 0 0 0 0 0
5.5 6.5 10. 11. 12. 12. 13. 14. 15. 20.
0 5 0 0 0 5 0 0
Les Types complexes
LES TABLEAUX
Déclaration d’un tableau à une dimension
VT[3]
T[4]X+1
Pour i de 1 à 10 faire
Lire(T[i])
Fin pour
Les Types complexes
LES TABLEAUX
Ecriture des éléments d’un tableau
Si l’on souhaite afficher le contenu des éléments d’un
tableau, on utilise également une boucle
Pour i de 1 à 10 faire
écrire(‘La valeur du’,i,’eme élément est ,’T[i])
Fin pour
Les Types complexes
LES TABLEAUX
Exemple: somme des éléments d’un tableau
Algorithme som_tab
Var T: tableau[1..10] d’entiers, S,i:entier
Début
Pour i de 1 à 10 faire
Lire(T[i]) Lecture des éléments
Fin pour du tableau T
S0
Pour i de 1 à 10 faire
Début On rajoute à S le
SS+T[i] contenu de chaque
Fin pour
élément de T
Écrire (‘La somme est: ‘,S)
Fin Algorithme
Les Types complexes
LES TABLEAUX (LE TRI D’UN TABLEAU)
Il existe plusieurs méthodes pour faire les tri des
valeurs d’un tableau selon l’ordre croissant ou
décroissant.
Le tri par sélection consiste à comparer le premier
élément aux éléments suivants. Si un élément
quelconque est inférieur au premier élément, les valeurs
sont permutées. A la fin la valeur minimale est affectée
à T[1].
L’opération sera répétée avec le 2eme élément en le
comparant aux autres valeurs sauf le premier et ainsi
de suite on compare le 3eme élément, le 4eme,
…jusqu'à l’avant dernier.
Les Types complexes
LES TABLEAUX (LE TRI D’UN TABLEAU)
Pour i de 1 à 10 faire
Lire(T[i])
Fin pour
Pour i de 1 à 9 faire
Pour j de i +1 à 10
Si T[i]>T[j] alors
CT[j]
T[j]T[i]
T[i]C
Fsi
Fin pour
Fin pour
Les Types complexes
LES TABLEAUX (LA RECHERCHE DANS UN TABLEAU TRIÉ)
La recherche d’une valeur dans un tableau non trié
nécessite de parcourir tous ses éléments.
La recherche dans un tableau trié est optimisée, elle
s’appelle une recherche dichotomique.
La recherche dichotomique permet rechercher un
élément dans la moitié du tableau et de comparer la
valeur à la valeur du premier élément du dernier, s’il
est compris entre ses valeurs, on se suffit à la première
partie, sinon la recherche se fait dans la deuxième
partie.
Les Types complexes
LES TABLEAUX (LA RECHERCHE DANS UN TABLEAU TRIÉ)
1 3 4 8 11 15 20 21 25 30
Source: http://larp.marcolavoie.ca/fr/description/description.htm
RESSOURCES BIBLIOGRAPHIQUES