Vous êtes sur la page 1sur 35

Hind ELOUEDI

1
Plan
 Introduction
 Eléments de base d’un algorithme
 Structures alternatives et itératives
 Types de données composés
 Conclusion

2
Introduction
 Définitions
 Algorithme: Un algorithme est une succession d'opérations ou
d'actions qui, exécutée sous un ordre défini à l'avance, résout une classe
donnée de problèmes. Ces actions ou opérations sont appelées aussi
instructions.
 Algorithmique: C'est l'art de spécification, d'analyse et de conception
des actions d'une solution, suivies de l'écriture proprement dite de
l'algorithme.
 Programme: C’est une succession ordonnée d’instructions, codées en
un langage compréhensible par la machine afin d’aboutir aux résultats
recherchés.

3
Introduction (2)

 Définitions (2)
 Types de traitement: Trois types d’actions:
 Actions simples: Lecture, écriture, affectation

 Actions décisionnelles: Permettent de définir les structures alternatives.

 Actions itératives: Permettent de définir les actions répétitives.

 Données: Les traitements s’appliquent à un ensemble de données qui


peuvent être de types différents (numériques, ensemble, caractères,
logiques, ou autres types structurés,…), de natures différentes
(variables ou constantes). L’application des traitements sur les données
aboutira aux résultats attendus.

4
Introduction (3)
 Structure générale d’un algorithme
-- Auteur : Nom de l’auteur
-- Date d’écriture : Date d’écriture de l’algorithme
-- Fonction : Ce que doit faire l’algorithme En-tête
Algorithme Nom_algorithme
Constante
Liste des constantes avec leurs valeurs
Type
Partie
Liste des types personnalisés (tableau, structure…)
Déclarative
Variable
Liste des variables avec leurs types
Debut
Instruction 1
Instruction 2
... Corps de
Instruction n l’algorithme
Fin
5
Eléments de base
 Déclarations
 Constantes  Type: Zone de déclaration des types
Constante personnalisés:
identificateur = valeur
Exemple
Type
Constante
a=5 Nom_Type = Définition de type
b = 2.5 Exemple
 Variables Type
Tab = Tableau [1..10] de Entier -- Type tableau
Variable d'entiers
identificateur : Nom_Type Indice = 1..10 -- Type intervalle
-- Commentaire
Exemples Etudiant = Enregistrement -- Type enregistrement
Variable NCE : Entier
a, b: Réel -- Coefficients de l’équation Nom : Chaîne[15] --Chaîne de caractères
x : Réel -- Solution de l’équation Prénom : Chaîne[15]
age : Entier -- Age d’une personne Fin Enregistrement
6
Eléments de base (2)
 Types de données simples
 Types numériques: Représentent l’ensemble des entiers (Z) et des réels (R).
 Notation: Entier, Réel
 Opérations arithmétiques: +, -, *, / (division réelle), Div (division entière), Mod (reste
de division)
 Opérations de comparaison: , =, <, >, , 
 Type caractère: C’est l’ensemble des caractères imprimables et non imprimables
représentés entre deux apostrophes. On distingue plusieurs types de caractères :
 Les lettres alphabétiques (minuscules 'a'..'z' et majuscules 'A'..'Z').
 Les chiffres ('0'..'9').
 Les signes de ponctuation et les symboles ('.', ':', '!', '&', '@', '[', etc.).
 Les caractères nom imprimables (Escape, Return, Back Space, etc.).
Tous ces caractères sont ordonnés selon leurs codes ASCII (Americain Standard Code for
Information Interchange) variant de 0 à 255.
 Notation: Caractère

7
Eléments de base (3)
 Types de données simples (2)
 Type logique ou booléen: C’est une information qui peut avoir que la valeur
Vrai ou Faux. Les opérateurs booléens sont :
 Négation: notée Non (opérateur unaire).
 Conjonction: notée ET (opérateur binaire).
 Disjonction: notée OU (opérateur binaire).
 Notation: Booléen
 Propriétés:
 Commutativité : P et Q deux variables logiques,
on a : P et Q = Q et P ainsi que: P ou Q = Q ou P
 Associativité : P, Q et R trois variables booléennes, on a :
 P et (Q ou R) = (P et Q) ou (P et R)
 P ou (Q et R) = (P ou Q) et (P ou R)
 Théorème de Morgan : P et Q deux variables logiques, on a :
 Non (P et Q) = Non P ou Non Q
 Non (P ou Q) = Non P et Non Q 8
Eléments de base (4)

 Types de données simples (3)


 Type scalaire énuméré: définit un ensemble ordonné de valeurs désignées
par des identificateurs. Ce genre de type doit être défini dans partie
déclarative Type.
 Exemples: Jours de la semaine
Type Semaine = {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche}
Variable jour: Semaine
NB: Une variable jour de type Semaine peut prendre comme valeur : lundi,
mardi, mercredi, jeudi, vendredi, samedi ou dimanche
 Opérateurs: Les opérateurs applicables aux variables de ce type sont : les
opérateurs de relations et les opérateurs PRED, SUCC et ORD.

9
Eléments de base (5)

 Types de données simples (4)


 Type intervalle: Ce type possède les propriétés d’un type scalaire discret
ordonné (Entier, Caractère et Scalaire énuméré). La définition d’un
intervalle est décrite par deux constantes Borne Inférieure et Borne
Supérieure appartenant à un type scalaire discret ordonné et tel que
Borne Inférieure ≤ Borne Supérieure.
Exemples:
• Type mois = 1..12
-- cette déclaration est beaucoup plus précise que mois : Entier
• Jour_Ouvrable = lundi .. samedi

10
Eléments de base (6)
 Actions (instructions) simples
 Affectation: Après avoir déclaré une variable, il faut pouvoir y ranger une valeur :
C'est l'action d'affectation notée par : "". Deux notions s'avèrent importantes à
définir à ce niveau et qui sont les notions de valeur et de variable.

nom_variable  expression
le nom d'une variable
destinée à recevoir une valeur Valeur à affecter à la variable
Symbole d'affectation

 Exemples
 A 3 -- Initialisation de A (qui est déjà déclarée)
 B4 -- Initialisation de B
 C A* 3 + 4 – B -- Affectation de la valeur de l’expression après son évaluation
àC
11
Eléments de base (7)
 Actions (instructions) simples (2)
 Ecriture: Nommée aussi Sortie ou Affichage, elle permet de communiquer ou
visualiser les résultats. La forme générale de cette instruction est la suivante :
Ecrire (expression_1, expression_2, ..., expression_n)

Ce sont des noms de données sous formes de variables, constantes ou d'expressions


On peut aussi afficher des messages qui seront représentés entre guillemets.

 Exemple: xa -- affecter à x la valeur de la constante a


Algorithme Ecriture y  15 -- affecter à y la valeur 15
Constante z  x + y -- affecter à z la somme de x et y
a=3 -- constante entière de valeur 3 Ecrire (x, y) -- affichage des valeurs de x et y
Variable Ecrire ("la valeur de z est : ", z)
x, y, z : Entier -- trois variables de type Entier -- affichage d’un message et de la valeur de z
Début Fin

Cet algorithme (Ecriture) fournira ces résultats : 3 15


12
la valeur de z est : 18
Eléments de base (8)
 Actions (instructions) simples (3)
 Lecture: nommée aussi instruction d’Entrée ou de Saisie, permet d'introduire une
donnée à partir d'un périphérique d'entrée (le clavier par exemple) et de la mettre
dans la variable cible. La forme générale de l'instruction de lecture est la suivante :
Lire (nom_variable_1, nom_variable_2, ..., nom_variable_n)

Les noms des variables destinées à ranger les valeurs prises sur le périphérique d'entrée

 Exemple: Algorithme permettant de lire un nombre, puis de calculer et d'écrire son carré.
Algorithme Carré
Variable
nombre, carre : Entier
Début
Ecrire ("Donner un entier:")
Lire (nombre)
carre  nombre * nombre
Ecrire ("Le carré de ", nombre, " est : ", carre)
Fin 13
Structures alternatives et itératives
 Structures alternatives
 Situation: On a besoin parfois de choisir entre deux ou plusieurs traitements
selon la réalisation ou non d'une certaine condition, d'où la notion de traitement
conditionnel ou alternatif (ou aussi décisionnel).
 Structure alternative à un choix:

Si (expression_logique) Alors
Instruction 1
...
Instruction n
FinSi

 Structure alternative à deux choix:


Si (expression_logique) -- Si l’expression logique a la valeur Vrai,
Alors bloc d'instructions1 -- le bloc d’instructions 1 est exécuté
Sinonbloc d'instructions2 -- dans le cas contraire, le bloc d’instructions 2 est exécuté
FinSi 14
Structures alternatives et itératives (2)
 Structures alternatives (2)
 Exemple: L’algorithme suivant permet de lire un nombre entier, puis de vérifier
s'il est pair ou impair.
Algorithme Pair_Impair
Variable
nombre : Entier
Début
Ecrire ("Donnez un nombre entier : ")
Lire (nombre)
Si (nombre Mod 2 = 0)
Alors Ecrire ("Le nombre ", nombre, " est pair")
Sinon Ecrire ("Le nombre ", nombre, " est impair")
FinSi
Fin
15
Structures alternatives et itératives (3)
 Structures alternatives (3)
 Structures alternatives imbriquées: (à plusieurs choix)

Si (expression_logique1)
Alors bloc d'instructions 1
Sinon
Si (expression_logique2)
Alors bloc d'instructions 2
Sinon
Si ...
FinSi

FinSi

16
Structures alternatives et itératives (4)
 Structures alternatives (4)
 Exemple: Calcul de remise: A partir d'un montant lu en donnée, on détermine un
montant net par application d'une remise de :
 5% si le montant est compris entre 2000 DT et 5000 DT.
 10% si le montant est supérieur à 5000 DT.
Algorithme Calcul_Remise
Variable
Montant, Remise : Réel Taux : Entier
Début
Ecrire ("Montant ? (en Dinars) :") Lire (Montant)
Si (Montant  2000)
Alors Taux  0
Sinon Si (Montant = 5000)
Alors Taux  5
Sinon Taux  10
FinSi
FinSi
Remise  Montant * Taux / 100
Montant  Montant – Remise
Ecrire ("Montant Net :", Montant)
17
Fin
Structures alternatives et itératives (5)
 Structures alternatives (5)
 Structure alternative Selon: (à plusieurs choix): Cette structure est utilisée pour
sélectionner une séquence possible d'instructions parmi plusieurs. Elle ressemble à la
structure Si...Alors...Sinon, mais elle est plus efficace lorsqu'il s'agit de tester la même
variable plusieurs fois pour des valeurs fixes. Sa forme se présente de la manière suivante:

Selon Sélecteur Faire


Liste_valeurs1 : instructions exécutées si Sélecteur est inclus dans Liste_valeurs1
Liste_valeurs2 : instructions exécutées si Sélecteur est inclus dans Liste_valeurs2
...
Liste_valeursN: instructions exécutées si Sélecteur est inclus dans Liste_valeursN
[Sinon : instructions à exécuter si rien ne correspond]
FinSelon

 Sélecteur : est un identificateur de variable ou une expression de type scalaire.


 Liste_valeurs1..Liste_valeursN : ce sont des valeurs servant aux tests. Elles peuvent être données
sous forme de constantes et/ou d'intervalles constants de type compatible avec le sélecteur.
 Liste_Valeurs1 (exemple 1 : 1..10 / exemple 2 : 1,3,5,7,9 / exemple 3 : 1..10, 20..30).
 [...] : bloc facultatif. 18
Structures alternatives et itératives (6)
 Structures alternatives (6)
 Exemple: Cet algorithme permet de saisir une date sous la forme jj, mm, aa et
d'afficher le nombre de jours du mois mm et le nombre de jours qui restent pour
la fin de ce mois.
Algorithme Jour_Mois
Variable
jj, mm, aa, jtot, jreste : Entier
Début
Ecrire ("Donnez la date sous la forme JJ MM AA : ")
Lire (jj, mm, aa) -- on suppose que la date saisie par l'utilisateur est valide
Selon mm Faire
1, 3, 5, 7, 8, 10, 12 : jtot  31 -- Janvier, Mars, Mai, Juillet, Août, Oct., Déc.
4, 6, 9, 11 : jtot  30 -- Avril, Juin, Sept. et Nov.
Sinon : Si (aa Mod 4 = 0) -- mois de Février, année bissextile (février a 29 jours)
Alors jtot  29
Sinon jtot  28
FinSi
FinSelon
jreste  jtot - jj
Ecrire ("Le mois ", mm, " a ", jtot, " jours et il reste encore ", jreste, " jours pour sa fin")
Fin
19
Structures alternatives et itératives (7)
 Structures itératives
 Définition: Ces structures sont utilisées pour décrire les répétitions d'une action
ou d'un groupe d'actions. Toute répétition d'actions doit être finie. Ceci sera
contrôlé à l'aide d'une expression logique ou condition dont le changement de
valeur provoque l'arrêt de la répétition. Cette condition est dite condition de sortie
ou d’arrêt du traitement itératif.
 Structure itérative : Répéter .. Jusqu’à

Répéter
Instruction 1
...
Instruction n
Jusqu'à (expression_logique)

 L'expression logique est testée après chaque exécution du traitement, si elle n'est pas vérifiée la boucle s'arrête.
 Si l'expression logique n'a pas été modifiée, on aura dans ce cas une boucle infinie.
 La séquence d'instructions est exécutée au moins 1 fois.
 Le nombre de répétitions dans la boucle n'est pas connu à l'avance. 20
Structures alternatives et itératives (8)
 Structures itératives (2)
 Exemple: On veut lire une note comprise entre 0 et 20. On pose la question
suivante "Donnez une note dans l'intervalle 0..20" jusqu'à ce que la réponse de
l'utilisateur convienne.
Algorithme Saisie_Note
Variable
N : Entier
Début
Répéter
Ecrire ("Donnez une note dans l'intervalle 0..20 :") (1)
Lire(N) (2)
Jusqu'à (N  0 et N  20)
Fin
 Les mots Répéter et Jusqu'à encadrent les deux instructions (1) et (2) : ça signifie que ces deux instructions
doivent être répétées autant de fois qu'il est nécessaire, et ceci jusqu'à ce que la variable N prenne une valeur
comprise entre 0 et 20.
 Notez bien que le nombre de répétition de ces deux instructions n'est pas indiqué explicitement. Il dépendra ici
de la valeur de N. 21
Structures alternatives et itératives (9)
 Structures itératives (3)
 Structure itérative : Tant Que .. faire

Tant Que (expression_logique) Faire


Instruction 1
Instruction 2
...
Instruction n
FinTantQue

 L'expression logique est testée avant chaque exécution du traitement itératif, si elle n'est pas
vérifiée la boucle s'arrête.
 Notez bien que si l'expression logique est fausse au départ, alors la boucle n'est jamais exécutée. Ce
schéma itératif pourra alors s’exécuter 0 fois.
 Le nombre de répétitions peut ne pas être connu à l'avance.
22
Structures alternatives et itératives (10)
 Structures itératives (4)
 Exemple: On veut afficher les multiple de 2 entre 10 et 77.

Algorithme Multiple2
Variable
i : Entier
Début
i  10
Ecrire ("Les multiples de 2 entre 10 et 77 sont : " )
Tant Que (i  77) Faire
Ecrire (i, " " )
ii+2 -- incrémentation du compteur i de 2
FinTantQue
Fin

23
Structures alternatives et itératives (11)
 Structures itératives (5)
 Structure itérative : Pour .. Faire

Pour Compteur de Deb à Fin [Pas Incrément]


Faire
Instruction 1
...
Instruction n
FinPour

 Incrément : Valeur d'incrémentation de Compteur après chaque exécution de la boucle. Si


aucune valeur n'est indiquée, l'argument Pas prend par défaut la valeur 1 comme valeur
d'augmentation.
 Le nombre de répétitions dans la boucle Pour .. Faire peut être calculé en faisant la différence
entre la valeur initiale et la valeur finale à laquelle on ajoute la valeur 1.

24
Structures alternatives et itératives (12)
 Structures itératives (6)
 Exemple: Supposons que l'on souhaite répéter 10 fois les instructions permettant
de lire un nombre entier et d'en écrire le carré.

Algorithme Carré
Variable
nombre, carre, cpt : Entier
Début
Pour cpt de 1 à 10 Faire
Ecrire ("Donner un entier:")
Lire (nombre)
carre  nombre * nombre
Ecrire ("Le carré de ", nombre, " est : ", carre)
FinPour
Ecrire ("Fin du programme")
Fin
25
Types de données composés
 Le type Tableau
 Définition: C’une structure de données composée, constituée d’éléments qui ont le
même type, appelé type de base. Le nom d'un composant du tableau utilise une ou
plusieurs valeurs d'indices appartenant à des types discrets spécifiés (Le type Entier
en général). Un objet tableau est caractérisé par le nombre d'indices, appelé
dimension du tableau, les bornes inférieure et supérieure de chaque indice, et le type
des composants.
 Tableau unidimensionnel ou vecteur: (une seule dimension)

Constante
Binf = … -- borne inférieure
Bsup = … -- borne Supérieure
Type
Dimension = … -- intervalle
Nom_Type1 = Tableau [Binf..Bsup] de Type_Base
Nom_Type2 = Tableau [Dimension] de Type_Base
Variable
T : Nom_Type1 -- déclaration d’une variable T de type Nom_Type1 26
Types de données composés (2)
 Le type Tableau (2)
 Exemple: On veut saisir 30 moyennes comprises entre 0 et 20 et les stocker dans
un vecteur de Réel nommé Moy, puis afficher son contenu à l'écran, enfin calculer
et afficher la moyenne générale de ces moyennes.
Algorithme Moy_Générale
Constante Répéter
BSup = 30 Lire (Moy[i])
Type Jusqu’à (Moy[i]  0 Et Moy[i]  20)
Moyennes = Tableau [1..BSup] de Réel Total  Total + Moy[i]
Variable FinPour
Moy : Moyennes Ecrire("Voici les moyennes saisies : ")
i : Entier Pour i de 1 à Bsup Faire
Total, MoyG : Réel Ecrire (Moy[i])
Début FinPour
Total  0 MoyG  Total/Bsup
Pour i de 1 à Bsup Faire Ecrire ("La moyenne générale est : ", MoyG)
Ecrire ("Saisir la moyenne N° : ", i) Fin
27
Types de données composés (3)
 Le type Tableau (3)
 Tableau bidimensionnel ou matrice: (deux dimensions)
Type
Dim1 = … -- type intervalle
Dim2 = … -- type intervalle
Nom_Type = Tableau [Dim1, Dim2] de Type_Base
Variable
T : Nom_Type -- déclaration d’une variable T de type Nom_Type
 Exemple: Comme le montre la figure suivante, la 1ère dimension, horizontale,
représente les lignes du tableau, et la seconde dimension, verticale, représente les
colonnes.
Tableau à deux dimensions (30,5) nommé Note 2ème dimension
1ère dimension
1 2 3 4 5
1 10 12 11 15 9
2 8 13 12,5 12 10
3 15 12 13 10 17
… … … … … …
30 10,5 8,5 9 10 11,5 28
Types de données composés (4)
 Le type Tableau (4)
 Suite de l’exemple: Remplissage du tableau bidimensionnel Notes.
Algorithme Matrice_Notes
Constante
Etudiants = 30 Matieres = 5
Type
Tab_Notes = Tableau [1..Etudiants, 1..Matières] de Réel
Variable
Notes : Tab_Notes NumEtud, NumMat : Entier
Début
Pour NumEtud de 1 à Etudiants Faire
Ecrire ("Pour l'étudiant : ", NumEtud)
Pour NumMat de 1 à Matières Faire
Ecrire ("Saisir la note : ", NumMat)
Répéter
Lire (Notes[NumEtud,NumMat])
Jusqu’à (Notes[NumEtud,NumMat]  0 Et Notes[NumEtud,NumMat]  20)
FinPour
FinPour
29
Fin
Types de données composés (5)
 Le type Chaîne de caractères
 Définition: C’est une structure de données permettant de représenter toute
séquence de caractères :
 La longueur maximale que la chaîne est susceptible d'atteindre est de 255 caractères.
 Une chaîne est toujours entourée de guillemets ("chaîne").
 On peut avoir une chaîne de caractères vide ("") ayant une longueur égale 0.

Variable
Nom : Chaîne -- Nom est une variable de type chaîne de taille indéfinie
Adresse : Chaîne[50] -- Adresse est une variable de type chaîne de taille 50

 Remarques:
 La lecture, l'écriture et l'affectation sont des opérations applicables sur les variables de type Chaîne.

 Les opérateurs relationnels (=, , , , , ) s'appliquent aux chaînes de caractères. On peut, par
exemple, tester l'égalité ou l'inégalité de 2 chaînes de même longueur.
 Long (ch), est une fonction prédéfinie permettant de déterminer la longueur effective d’une chaîne.

 ch[i] permet d'accéder au ième caractère de la chaîne ch (avec i  [1, Long(ch)]).


30
Types de données composés (6)
 Le type Enregistrement
 Définition: Nommé aussi Article, c’est une structure de données constituée d’un nombre
fixe de composants nommés Champs qui peuvent être de types différents. La valeur d'un
objet article est une valeur composée, constituée des valeurs de ses composants. Chaque
champ a un nom et un type.

Type
Type_Article = Enregistrement
Champ1 : Type_Champ1
Champ2 : Type_Champ2

ChampN : Type_ChampN
FinEnregistrement
Variable
Art : Type_Article -- déclaration d’une variable Art de type Type_Article

 Remarque: L’accès à un champ se fait par l'identificateur de la variable article


suivi d'un point (.) puis l'identificateur du champ. Dans cet exemple, on fait :
Art.Champ2 pour accéder au champ2. 31
Types de données composés (7)
 Le type Enregistrement (2)
 Exemple: On veut saisir les données relatives à 30 étudiants (une classe), dont
la structure est représentée par les champs suivants:
 Nce : Numéro de la carte d’étudiant de type Entier (ou Chaîne[8]).
 NP : Nom et Prénom de l’étudiant de type Chaîne[25].
 DatNais : Date de naissance de l’étudiant de type Date qui est composée de :
 Jour : De type intervalle d’entier compris entre 1 et 31.
 Mois : De type intervalle d’entier compris entre 1 et 12.
 An : de type Entier.
 LieuNais : Lieu de naissance de l’étudiant de type Chaîne[15].
 Adr : Adresse de l’étudiant de type Chaîne[50].

32
Types de données composés (8)
 Le type Enregistrement (3)
 Suite de l’exemple:
Algorithme Infos_Etudiant
Constante Début
Taille = 30 Ecrire ("Saisie des infos relatives aux étudiants : ")
Type Pour i de 1 à Taille Faire
Date = Enregistrement Ecrire ("Etudiuant :", i)
Jour: 1..31 Ecrire ("Nce : ")
Mois: 1..12 Lire (T[i].Nce)
An: Entier Ecrire ("Nom et Prénom: ")
FinEnregistrement Lire (T[i].NP)
Etudiant = Enregistrement Ecrire ("Date de Naissance : ")
Nce : Entier -- ou bien Chaîne[8] Lire (T[i].DatNais.jour)
NP : Chaîne[25] Lire (T[i].DatNais.mois)
DatNais : Date Lire (T[i].DatNais.an)
LieuNais : Chaîne[15] Ecrire ("Lieu de Naissance : ")
Adr : Chaîne[30] Lire (T[i].LieuNais)
FinEnregistrement Ecrire ("Adresse : ")
Tab_Etudiant = Tableau[1..Taille] de Etudiant Lire (T[i].Adr)
Variable FinPour
T : Tab_Etudiant -- T est un tableau d'étudiants Fin
i : Entier -- compteur pour le nombre d’étudiants -- Il faut ajouter à cet algorithme tous les contrôles de saisie. 33
Conclusion

 Rappeler les concepts fondamentaux de l’algorithmique.


 Unifier les notations dans l’écriture des algorithmes.
 Etre capable d’écrire des algorithmes en utilisant les
structures de contrôles et les structures de données simples
et composées.

34
A Suivre…

35