Vous êtes sur la page 1sur 121

Cours Info 2 : algorithmique et

programmation
Pr. Sara BAKKALI

INSA, Euro-Méditerranée, Fès.


2018/2019

1
Objectifs

 Apprendre les concepts de base de l'algorithmique et


de la programmation
 Être capable de mettre en œuvre ces concepts pour
analyser des problèmes simples et écrire les
programmes correspondants
 Application en TD dans un pseudo-langage
algorithmique
 Programmation en TP dans un langage réel (Java)

2
Plan
 Introduction
 CHAPITRE 1 : Introduction à l’Algorithmique
 Définition de l’algorithmique
 Notion de variable, affectation, lecture et écriture
 Instructions conditionnels et instructions itératives
 Les Tableaux, les fonctions et procédures

• CHAPITRE 2: Initiation à la programmation Java

3
CHAPITRE 1 : Introduction à
l’Algorithmique

4
Chapitre 1
Introduction
• Comment changer une roue ???
1. Sortir cric, manivelle, et roue de secours
2. Monter la voiture sur le cric
3. Démonter la roue
4. Monter la roue de secours
5. Enlever le cric
6. Ranger cric, manivelle, et roue de secours

5
Introduction
Définitions :
Algorithme : Introduit par le mathématicien et astronome arabe-
perse Muhammad ibn al-Khawarizmi, le père de l'algèbre, qui
formalisa au IXe siècle la notion d'algorithme .
 Résolution des problèmes :
- chercher le plus grand diviseur commun de deux entiers
- résoudre une équation différentielle
- trouver le chemin optimal dans une ville
- chercher une stratégie pour exploiter un nouveau marché
financier
 Description du processus de résolution de façon précise et non-
ambiguё ne laissant place ni à l’interprétation ni à l’intuition.

6
Introduction
 Définitions :
• Algorithme : une suite ordonnée et finie d'opérations
élémentaires = instructions qui indique la démarche à suivre
pour résoudre un problème.
- effectué sur des données pour aboutir à des résultats.

• L’algorithmique : la science des algorithmes.

• Validité d’un algorithme : aptitude à réaliser exactement la tâche


pour laquelle il a été conçu.

• Optimisation d’un algorithme : le meilleur algorithme (optimal)


est celui qui contient moins d’instructions.

7
Introduction
 Définitions :

Algorithme: Suite finie d’instructions vérifiant:

• Chaque étape est décrite de façon précise;


• Chaque étape est déterministe: produit des résultats uniques;
• L’algorithme s’arrête après un nb fini d’instructions
• Reçoit des données en entrée;
• Produit des données en sortie;
• Généralité: Applicable à des ensembles différents de données
d’entrée

8
Chapitre 1
 Représentation d’un algorithme
• Historiquement, deux façons pour représenter un
algorithme:
 L’Organigramme: représentation graphique avec des
symboles (carrés, losanges, etc.)
 offre une vue d’ensemble de l’algorithme
 représentation quasiment abandonnée aujourd’hui
 Le pseudo-code: représentation textuelle avec une série de
conventions ressemblant à un langage de programmation
 plus pratique pour écrire un algorithme
 représentation largement utilisée

9
Chapitre 1
 Représentation d’un algorithme:
 L’Organigramme:
Exemple

10
Chapitre 1
 Représentation d’un algorithme:
 Le Pseudo-Code (Structure):
• Notation proche du code des langages de programmation
(C, Pascal, Java).
 Titre de l’algorithme, description brève, entrées, sorties
 Numéroter les lignes (facultatif)
 Bloc d’instructions entre ``Début’’ et ``Fin’’
 Instructions (lignes exécutables) exécutées l’une après
l’autre
 Ligne de commentaires signalée par // (ou /* */)
 ``Retourne (x)’’ termine le traitement et retourne la valeur
de x
11
Chapitre 1
 Représentation d’un algorithme:
 Le Pseudo-Code: (Exemple)
Algorithme maximum: Retourne le maximum de 3 entiers
• Entrée: Trois entiers a, b, c;
• Sortie: x contenant la valeur maximale parmi a, b, c
1. Début
2. x a;
3. Si b>x alors // Si b plus grand que x, mettre x à jour
4. x b;
5. Si c>x alors // Si c plus grand que x, mettre x à jour
6. x c;
7. Retourner (x)
8. Fin

12
Chapitre 1
 Structure d’un algorithme:
Un algorithme est composé de deux parties :

 Partie Déclaration : contient les objets (données et résultats)


utilisés pour résoudre le problème.

 Partie Traitement : contient les instructions (actions ou


opérations) qui permettent de résoudre le problème.

13
Chapitre 1
 Structure d’un algorithme:
• La forme générale d’un algorithme se présente comme suit :
 Algorithme nom_algorithme
 Constantes
Déclaration des constantes
 Types Partie Déclaration
Déclaration des nouveaux types
 Variables
Déclaration des variables
 Début
Instructions Partie Traitement
 Fin

14
Chapitre 1
 Structure d’un algorithme:
Exercice :
Ecrivez le pseudo-code de l’algorithme permettant de calculer la
surface d’un cercle qui a un rayon de 12.5 cm.

Réponse :
Algorithme surface
Constantes
PI = 3.14
rayon = 12.5
Variables
air : réel
Début
air  rayon * rayon* PI
ecrire (air)
Fin 15
Chapitre 1
 Conception d’un algorithme:
1. La phase d’analyse :
 Identifier les paramètres qui décrivent le problème
= les données (entrées) + les résultats (sorties)
 Formuler le problème et proposer des méthodes de résolution
= formules, équations mathématiques, règles de gestion….

2. La phase de conception :
 Représenter les paramètres du problèmes par des objets
algorithmiques = variables, constantes, structures de données
 Exprimer les méthodes de résolution sous forme d’instructions
algorithmique = les opérateurs, les conditions, les boucles, les
fonctions…
16
Chapitre
 Conception d’un algorithme:
1
Exemple : Calculer le maximum de 3 entiers

Analyse :
• Entrées: Trois entiers a, b, c;
• Sorties: x contenant la valeur maximale parmi a, b, c
• Méthode : comparaison de a, b et c

Conception :
• Algorithme Maximum
• Variables : a, b, c et x: entiers
Début
x  a;
Si b>x alors // Si b plus grand que x, mettre x à jour
x b;
Si c>x alors // Si c plus grand que x, mettre x à jour
x  c;
Retourner (x)
Fin
17
Chapitre 1
 Les objets d’un algorithme:
 Les variables :
• Une variable sert à stocker la valeur d’une donnée
• Une variable désigne un emplacement mémoire dont le contenu
peut changer au cours d’un algorithme (d’où le nom de variable)

• La variable doit être déclarée avant d’être utilisée, elle est


caractérisée par :
 Un Identificateur : un nom qui permet de désigner la variable dans
l’algorithmes
 Un type : indique l’ensemble des valeurs que peut prendre la variable
(entier, réel, booléen, caractère, chaîne de caractères, …)
 Un état : correspond à la valeur prise à un instant de l’exécution de
l’algorithme
18
Chapitre 1
 Les objets d’un algorithme:
 Les variables :
• L’identificateur :
- Permet d’identifier une variable parmi les autres.
- Une suite de caractères alphanumériques qui respectent les contraintes
suivantes :
 Un nom doit commencer par une lettre alphabétique,
Exp : E1 (1E non valide)

 doit être constitué uniquement de lettres, de chiffres et le caractère de


soulignement (« _ ») (Éviter les caractères de ponctuation, les espaces, les
caractère accentués et spéciaux),
Exp : SMI2008, SMI_2008; (SMP 2008, SMP-2008, SMP;2008 : non valides)

 doit être significatif décrivant les données manipulées


Exp : NoteEtudiant, Prix_TTC, Prix_HT
19
Chapitre 1
 Les objets d’un algorithme:
 Les variables :
• Les Types prédéfinis :
 Entier : c’est l’ensemble des entiers positifs, nuls ou négatifs. Les opérateurs
applicables sont :
- opérations arithmétiques : +, -, *, / , div : division entière et mod : reste de la
division entière
- opérations de comparaison : =, ≠, <, ≤, ≥ et >

 Réel : c’est l’ensemble des réels. Les opérateurs applicables sont :


- opérations arithmétiques : +, -, * et /
- opérations de comparaison : =, ≠, <, ≤, ≥ et >

20
Chapitre 1
 Les objets d’un algorithme:
 Les variables :
• Les Types prédéfinis :
 Booléen ou logique : ne prend que deux valeurs : VRAI ou FAUX. Les opérations
possibles :
- opérations logiques : et , ou et non
- opérations de comparaison : = et ≠

 Caractère : constitué par les lettres (a,…..,z et A,…..,Z), les chiffres (0,….9) et les
caractères spéciaux . Les opérations possibles :
- opérations de comparaison : =, ≠, < et >

 Chaîne de caractère: suite ordonnée de caractères. Les opérations possibles :


- opérations de comparaison : =, ≠, < et >

21
Chapitre 1
 Les objets d’un algorithme:
 Les variables :
• La déclaration de variable:
 attribuer un identificateur et un type.
 toute variable utilisée dans un algorithme doit être déclarée au
préalable (avant d’ être utilisée)
 la déclaration de variables est effectuée par la forme suivante :
Variables liste d'identificateurs : type
 Exemple:
Variables i, j, k : entier
x, y : réel
OK: booléen
rep, c : caractère
22
Chapitre 1
 Les objets d’un algorithme:
 Les constantes:
• Une constante est une variable dont la valeur ne change pas au cours
de l'exécution de l’algorithme.
• Elle est caractérisée par un identificateur (par convention, les noms
de constantes sont en majuscules), un type et une valeur.
• Elle peut avoir les mêmes types qu’une variable : entier, réel,
caractère, ou booléen.
• La déclaration d’une constante :
Constante identificateur=valeur : type
• Exemple :
Constante PI=3.14

23
Chapitre 1
 la séquence des instructions
• Les opérations d'un algorithme sont habituellement
exécutées une à la suite de l'autre, en séquence (de haut en
bas et de gauche à droite).

• L'ordre est important. On ne peut pas changer cette


séquence de façon arbitraire.

• Par exemple, enfiler ses bas puis enfiler ses bottes n’est pas
équivalent à enfiler ses bottes puis enfiler ses bas.

24
Chapitre 1
 Les instructions de base
• Un algorithme informatique est formé de quatre types
d’instructions considérées comme des petites briques de
base :
 l’affectation de variables
 Les expressions et les opérateurs
 la lecture et/ou l’écriture
 les tests et les boucles

25
Chapitre 1
 Les instructions de base
• L’ Affectation
 L’affectation consiste à attribuer une valeur à une variable (c’est-à-
dire remplir ou modifier le contenu d'une zone mémoire)
 En pseudo-code, l'affectation est notée par le signe ←
Var← e : attribue la valeur de e à la variable Var
- e peut être une valeur, une autre variable ou une expression
- Var et e doivent être de même type ou de types compatibles
 l’affectation ne modifie que ce qui est à gauche de la flèche (A←B est
différente de B←A
 l'affectation est différente d'une équation mathématique : A+1 ← 3
n'est pas possible en algorithmique et n'est pas équivalente à A ← 2

 Exemples :
i ←1; j ←i ; k ←i+j avec i, j, k : entier
x ←10.3 x :réel ; OK ←FAUX OK :booléen

i ←10.3 ; OK ←"SMI" ; j ←x non valides 26


Chapitre 1
 Les instructions de base
• L’ Affectation
• Exercice : Donnez les valeurs des variables A, B et C après
exécution des instructions suivantes ?
Variables A, B, C: Entier
Début
A←7
B ← 17
A←B
B ← A+5
C←A+B
C←B–A
Fin
27
Chapitre 1
 Les instructions de base
• L’ Affectation
• Exercice : Donnez les valeurs des variables A et B après
exécution des instructions suivantes ?
Variables A, B : Entier
Début
A←6
B←2
A←B
B←A
Fin
• Les deux dernières instructions permettent-elles
d’échanger les valeurs de A et B ?
28
Chapitre 1
 Les instructions de base
• L’ Affectation
• l’échange des chandails

29
Chapitre 1
 Les instructions de base
• L’ Affectation
• Exercice (Echange) : Écrire un algorithme permettant
d’échanger les valeurs de deux variables A et B ?

30
Chapitre 1
 Les instructions de base
• L’ Affectation
• Exercice (Echange) : Écrire un algorithme permettant d’échanger
les valeurs de deux variables A et B ?

• Réponse : on utilise une variable auxiliaire C et on écrit les


instructions suivantes :
Algorithme Echange
Variables A, B, C: Entier
Début
C←A
A←B
B←C
Fin
31
Chapitre 1
 Les instructions de base
• Expressions et opérateurs :
 Une expression peut être une valeur, une variable ou une opération
constituée de variables reliées par des opérateurs
exp: 1, b, a*2, a+ 3*b-c, …

 L'évaluation de l'expression fournit une valeur unique qui est le


résultat de l'opération

 Les opérateurs dépendent du type de l'opération, ils peuvent être :


o des opérateurs arithmétiques: +, -, *, /, % (modulo), ^(puissance)
o des opérateurs logiques: NON(!), OU(| |), ET (&&)
o des opérateurs relationnels: =, <, >, <=, >=
o des opérateurs sur les chaînes: & (concaténation)

 Une expression est évaluée de gauche à droite mais en tenant compte


des priorités des opérateurs.
32
Chapitre 1
 Les instructions de base
• Expressions et opérateurs :
 Priorité des opérateurs :
o Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de priorité
est le suivant (du plus prioritaire au moins prioritaire) :
1. () : les parenthèses
2. ^ : (élévation à la puissance)
3. * , / (multiplication, division)
4. % (modulo)
5. + , - (addition, soustraction)
o Exp: 9 + 3 * 4 vaut 21
o En cas de besoin, on utilise les parenthèses pour indiquer les
opérations à effectuer en priorité
Exp: (9 + 3) * 4 vaut 48

o À priorité égale, l’évaluation de l’expression se fait de gauche à droite

33
Chapitre 1
 Les instructions de base
• Expressions et opérateurs :Remarques
• On ne peut pas additionner un entier et un caractère

• La signification d’un opérateur peut changer en fonction du type


des opérandes :
 l’opérateur + avec des entiers effectue l’addition, 3+6 vaut 9

 avec des chaînes de caractères il effectue la concaténation


"bonjour" + " tout le monde" vaut "bonjour tout le monde"

34
Chapitre 1
 Les instructions de base
• Expressions et opérateurs :
o Les opérateurs booléens
 Associativité des opérateurs et et ou : a et (b et c) = (a et b) et c
 Commutativité des opérateurs et et ou : a et b = b et a ;
a ou b = b ou a;
 Distributivité des opérateurs et et ou : a ou (b et c) = (a ou b) et (a
ou c) ; a et (b ou c) = (a et b) ou (a et c)
 Involution (homographie réciproque) : non non a = a
 Loi de Morgan : non (a ou b) = non a et non b ;
non (a et b) = non a ou non b

35
Chapitre 1
 Les instructions de base
• Expressions et opérateurs :
o Les opérateurs booléens
 Tables de vérité

36
Chapitre 1
 Les instructions de base
• Les instructions d’entrées et sorties : lecture et écriture
 Les instructions de lecture et d'écriture permettent à la machine
de communiquer avec l'utilisateur
 La lecture permet d'entrer des donnés à partir du clavier
 En pseudo-code, on note lire (var) la machine met la valeur
entrée au clavier dans la zone mémoire nommée var
 Remarque: Le programme s'arrête lorsqu'il rencontre une
instruction Lire et ne se poursuit qu'après la saisie de l’entrée
attendue par le clavier et de la touche Entrée (cette touche signale
la fin de l’entrée)
 Conseil: Avant de lire une variable, il est fortement conseillé
d’écrire des messages à l’écran, afin de prévenir l’utilisateur de ce
qu’il doit frapper 37
Chapitre 1
 Les instructions de base
• Les instructions d’entrées et sorties : lecture et écriture
 L'écriture permet d'afficher des résultats à l'écran (ou de les
écrire dans un fichier)
 En pseudo-code, on note: écrire (liste d’expressions)
 la machine affiche les valeurs des expressions décrite dans la liste.
 Ces instructions peuvent être des variables ayant des valeurs, des
nombres ou des commentaires sous forme de chaines de
caractères.
 Exemple : écrire(a, b+2, "Message")

38
Chapitre 1
 Les instructions de base
• Les instructions d’entrées et sorties : lecture et écriture
• Exercice : Écrire un algorithme qui demande un nombre
entier à l'utilisateur, puis calcule et affiche le carré de ce
nombre

39
Chapitre 1
 Les instructions de base
• Les instructions d’entrées et sorties : lecture et écriture
• Exercice : Écrire un algorithme qui demande un nombre
entier à l'utilisateur, puis calcule et affiche le carré de ce
nombre
Algorithme Calcul_du_Carre
variables A, B : entier
Début
écrire("entrer la valeur de A ")
lire(A)
B ← A*A
écrire("le carré de ",A, "est :", B)
Fin
40
Chapitre 1
 Les instructions de base
• Les instructions d’entrées et sorties : lecture et écriture
• Exercice : Écrire un algorithme qui permet d’effectuer la
saisie d’un nom, d’un prénom et affiche ensuite le nom
complet

41
Chapitre 1
 Les instructions de base
• Les instructions d’entrées et sorties : lecture et écriture
• Exercice : Écrire un algorithme qui permet d’effectuer la saisie
d’un nom, d’un prénom et affiche ensuite le nom complet
Algorithme AffichageNomComplet
variables Nom, Prenom, Nom_Complet : chaîne de caractères
Début
écrire("entrez le nom")
lire(Nom)
écrire("entrez le prénom")
lire(Prenom)
Nom_Complet ← Nom + " " + Prenom
écrire("Votre nom complet est : ", Nom_Complet)
Fin 42
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Définition : une condition est une expression écrite entre parenthèse à
valeur booléenne.
 Les instructions conditionnelles servent à n'exécuter une instruction ou
une séquence d'instructions que si une condition est vérifiée.
 En pseudo-code :
Si (condition) alors
instruction ou suite d'instructions1
Sinon
instruction ou suite d'instructions2
Finsi

43
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Remarques :
o la condition ne peut être que vraie ou fausse
o si la condition est vraie alors seules les instructions1 sont
exécutées
o si la condition est fausse seules les instructions2 sont exécutées
o la condition peut être une expression booléenne simple ou une
suite composée d’expressions booléennes
o La partie Sinon est optionnelle, on peut avoir la forme simplifiée
suivante:
Si (condition) alors
instruction ou suite d'instructions1
Finsi

44
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Exemple :
Algorithme ValeurAbsolue1
Variable x : réel
Début
écrire (" Entrez un réel : ")
lire (x)
Si (x < 0) alors
écrire ("la valeur absolue de ", x, "est:",-x)
Sinon
écrire ("la valeur absolue de ", x, "est:",x)
Finsi
Fin

45
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Exemple :
Algorithme ValeurAbsolue2
Variable x, y : réel
Début
écrire (" Entrez un réel : " )
lire (x)
y← x
Si (x < 0) alors
y ← -x
Finsi
écrire ("la valeur absolue de ", x, "est:",y)
Fin
46
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Exercice (tests) : Écrire un algorithme qui demande un
nombre entier à l'utilisateur, puis qui teste et affiche s'il est
divisible par 7 ou non

47
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Exercice (tests) : Écrire un algorithme qui demande un nombre entier à
l'utilisateur, puis qui teste et affiche s'il est divisible par 7 ou non

Algorithme Divsible_par7
Variable n : entier
Début
écrire (" Entrez un entier : ")
Lire (n)
Si (n%7=0) alors
écrire (n," est divisible par 7")
Sinon
écrire (n," n'est pas divisible par 7")
Finsi
Fin

48
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Conditions composées

o Une condition composée est une condition formée de plusieurs


conditions simples reliées par des opérateurs logiques: ET, OU, OU
exclusif (XOR) et NON

o Exemples :
- x compris entre 2 et 6 : (x >= 2) ET (x < =6)
- n divisible par 3 ou par 2 : (n%3=0) OU (n%2=0)

49
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Tests imbriqués
o Les tests peuvent avoir un degré quelconque d'imbrications
Si condition1 alors
Si condition2 alors
instructionsA
Sinon
instructionsB
Finsi
Sinon
Si condition3 alors
instructionsC
Finsi
Finsi
50
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Tests imbriqués
o Exemple 1 :
Variable n : entier
Début
écrire ("entrez un nombre : ")
Lire (n)
Si n < 0 alors
écrire ("Ce nombre est négatif")
Sinon
Si n = 0 alors
écrire ("Ce nombre est nul")
Sinon
écrire ("Ce nombre est positif")
Finsi
Finsi
Fin 51
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Tests imbriqués : exemple 2
Variable n : entier
Début
écrire ("entrez un nombre : ")
Lire (n)
Si n < 0 alors
écrire ("Ce nombre est négatif")
Finsi
Si n = 0 alors
écrire ("Ce nombre est nul")
Finsi
Si n > 0 alors
écrire ("Ce nombre est positif")
Finsi
Fin
• Remarque : dans l’exemple 2 on fait trois tests systématiquement alors que
dans l’exemple 1, si le nombre est négatif on ne fait qu'un seul test
• Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer
52
d'abord les conditions les plus probables
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Tests imbriqués :
• Exercice : Le prix de disques compacts (CDs) dans espace de vente varie
selon le nombre à acheter: 5 DH l’unité si le nombre de CDs à acheter est
inférieur à 10, 4 DH l’unité si le nombre de CDS à acheter est compris entre
10 et 20 et 3 DH l’unité si le nombre de CDs à acheter est au-delà de 20.
• Écrivez un algorithme qui demande à l’utilisateur le nombre de CDs à
acheter, qui calcule et affiche le prix à payer

53
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 Tests imbriqués :
• Exercice : correction
Variables unites : entier
prix : réel
Début
Ecrire ("Nombre d’unités : ")
Lire (unites)
Si unites < 10 Alors
prix ← unites*5
Sinon
Si unites < 20 alors
prix ← unites*4
Sinon prix ← unites*3
Finsi
Finsi
Ecrire (“Le prix à payer est : ”, prix)
Fin 54
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 L'instruction Selon :
o Lorsque l’on doit comparer une même variable avec plusieurs valeurs,
comme par exemple :
si a=1 alors instruction1
sinon
si a=2 alors instruction2
sinon
si a=4 alors instruction4
sinon . . .
finsi
finsi
finsi
o On peut remplacer cette suite de si par l’instruction cas
55
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 L'instruction selon (case):
o Sa syntaxe en pseudo-code est :
Selon v
v1 : action1
v2 : action2
...
vn : actionn
sinon : action autre
finselon
o v1,. . . , vn sont des constantes de type scalaire (entier, naturel,
énuméré, ou caractère)
o action i est exécutée si v = vi (on quitte ensuite l’instruction cas) action
autre est exécutée si quelque soit i, v ≠ vi
56
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 L'instruction cas : exemple
Variables c : caractère
Début
Ecrire(«entrer un caractère»)
Lire (c)
Si((c>=’A’) et (c<=‘Z’)) alors
Selon c
‘A’,’E’, ‘I’, ‘O’, ‘U’, ‘Y’ : Ecrire(c,«est une voyelle majuscule»)
sinon : Ecrire(c,« est une consonne majuscule »)
finselon
sinon Ecrire(c,«n’est pas une lettre majuscule»)
Finsi
Fin
57
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 L'instruction cas :
Exercice : Écrire un programme qui demande à l’utilisateur de saisir
un caractère et qui affiche « affirmatif » si le caractère est un « o »
(minuscule ou majuscule), « négatif » si c’est un « n » (minuscule ou
majuscule) et « ? ! ? ! ? ! ? » dans les autres cas

58
Chapitre 1
 Les instructions de base
• Tests: instructions conditionnelles
 L'instruction cas :
Exercice : Correction
Algorithme reponse
Variables reponse: caractère
Début
Écrire("veuillez saisir votre réponse (o/n) : ")
Lire(reponse)
Selon reponse
’o’, ’O’: Écrire ("Affirmatif !")
’n’, ’N’: Écrire("Négatif !")
sinon: Écrire("?!?!?!?")
Finselon
Fin
59
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles servent à répéter l'exécution d'un groupe
d'instructions un certain nombre de fois
 On distingue trois sortes de boucles en algorithmique:
o Les boucles tant que : on y répète des instructions tant qu'une
certaine condition est réalisée
o Les boucles jusqu'à : on y répète des instructions jusqu'à ce qu'une
certaine condition soit réalisée
o Les boucles pour ou avec compteur : on y répète des instructions en
faisant évoluer un compteur (variable particulière) entre une valeur
initiale et une valeur finale

60
Chapitre
 Les instructions de base
1
• Instructions itératives : les boucles
 Les boucles Tant que (while)
o Sa syntaxe en pseudo-code est :
TantQue (condition) (faire)
instructions
FinTantQue
o la condition (dite condition de contrôle de la boucle) est évaluée avant
chaque itération
o si la condition est vraie, on exécute les instructions (corps de la boucle),
puis, on re-teste la condition. Si elle est encore vraie, on répète
l'exécution, …
o si la condition est fausse, on sort de la boucle et on exécute
l'instruction qui est après FinTantQue
o Il est possible que les instructions à répéter ne soient jamais exécutées.

61
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Tant que (while) : remarques
o Le nombre d'itérations dans une boucle TantQue n'est pas connu au
moment d'entrée dans la boucle. Il dépend de l'évolution de la valeur
de la condition
o Une des instructions du corps de la boucle doit absolument changer la
valeur de la condition de vrai à faux (après un certain nombre
d'itérations), sinon le programme va tourner indéfiniment
o Attention aux boucles infinies
Exemple de boucle infinie : correction
i←1 i←1
TantQue i > 0 TantQue i <100
i ← i+1 i ← i+1
FinTantQue FinTantQue
62
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Tant que (while) : exemple
• Contrôle de saisie d'une lettre alphabétique jusqu’à ce que le caractère
entré soit valable :
Algorithme Controle_Saisie
Variable C : caractère
Début
Écrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z')
Ecrire ("Saisie erronée. Recommencez")
Lire (C)
FinTantQue
Ecrire ("Saisie valable")
Fin

63
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Tant que
 Exercice :
• Ecrire un algorithme qui permet de calculer la somme s des entiers
compris entre 0 et un nombre n saisi au clavier (on suppose que n≥0).

64
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Tant que
 Exercice : Correction
Algorithme somme
Variables s,n : entier
Début
Écrire ("Veuillez saisi n")
lire (n)
s0
Tant que n > 0
s  s+n
n  n-1
FinTant que
Écrire (s)
Fin 65
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Répéter … jusqu’à …
o Sa syntaxe en pseudo-code est :
Répéter
instructions
Jusqu'à condition
o Condition est évaluée après chaque itération
o les instructions entre Répéter et jusqu’à sont exécutées au moins une
fois et leur exécution est répétée jusqu’à ce que la condition soit vraie
(tant qu'elle est fausse)

66
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Répéter … jusqu’à … : Exemple
o Algorithme qui calcule la somme s des entiers compris entre 0 et un
nombre n saisi au clavier.
Algorithme Somme
Variables s,n,i: entier
Début
lire (n)
s0
i 0
Répéter
s s+i
i  i+1
Jusqu'à (i>n)
Ecrire (s)
Fin
67
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Répéter … jusqu’à … :
o Exercice
• Un algorithme qui détermine le premier nombre entier N tel que la
somme de 1 à N dépasse strictement 100 (version avec répéter
jusqu'à)

68
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Répéter … jusqu’à … :
o Exercice : Correction
Algorithme Somme
Variables som, i : entier
Début
som ← 0
i←0
Répéter
i ← i+1
som ← som+i
Jusqu'à ( som > 100)
Ecrire (" La valeur cherchée est N= ", i)
Fin
69
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Tant que et Répéter jusqu’à
o Différences entre les boucles Tant que et Répéter jusqu'à :
- la séquence d'instructions est exécutée au moins une fois dans la
boucle Répéter jusqu'à, alors qu'elle peut ne pas être exécutée dans le
cas du Tant que.
- la séquence d'instructions est exécutée si la condition est vraie pour
Tant que et si la condition est fausse pour Répéter … jusqu'à.
- Dans les deux cas, la séquence d'instructions doit nécessairement
faire évoluer la condition, faute de quoi on obtient une boucle infinie.

70
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
• Les boucles Pour : (For)
o Sa syntaxe en pseudo-code est :
Pour compteur initiale à finale [par pas] faire
instructions
FinPour
o Elle permet de répéter un traitement un nombre de fois précis et connu
en utilisant un compteur (variable à incrémenter d'une itération à
l'autre).

71
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Pour : (For)
o Déroulement roulement des boucles Pour
1) La valeur initiale est affectée à la variable compteur
2) On compare la valeur du compteur et la valeur de finale :
a) Si la valeur du compteur est > à la valeur finale dans le cas d'un
pas positif (ou si compteur est < à finale pour un pas négatif),
on sort de la boucle et on continue avec l'instruction qui suit FinPour
b) Si compteur est <= à finale dans le cas d'un pas positif (ou si
compteur est >= à finale pour un pas négatif), instructions seront
exécutées
i. Ensuite, la valeur du compteur est incrémentée de la valeur du pas si pas
est positif (ou décrémenté si pas est négatif)
ii. On recommence l'étape 2 : La comparaison entre compteur et finale est
de nouveau effectuée, et ainsi de suite …

72
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Pour : Remarques
o le nombre d'itérations dans une boucle Pour est connu avant le début
de la boucle
o Compteur est une variable de type entier (ou caractère). Elle doit être
déclarée
o Pas est un entier qui peut être positif ou négatif. Pas peut ne pas être
mentionné, car par défaut sa valeur est égal à 1. Dans ce cas, le nombre
d'itérations est égal à finale - initiale+ 1
o Initiale et finale peuvent être des valeurs, des variables définies avant
le début de la boucle ou des expressions de même type que compteur

73
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Pour : remarques
o Il faut éviter de modifier la valeur du compteur (et de finale) à
l'intérieur de la boucle. En effet, une telle action :
- perturbe le nombre d'itérations prévu par la boucle Pour
- rend difficile la lecture de l'algorithme
- présente le risque d'aboutir à une boucle infinie
o Exemple :
Pour i allant de 1 à 5
i ←i -1
écrire(" i = ", i)
Finpour

74
Chapitre
 Les instructions de base
1
• Instructions itératives : les boucles
 Les boucles Pour : exemple 1 (forme 1)
o Calcul de x à la puissance n où x est un réel non nul et n un entier positif
ou nul
Algorithme Puissance
Variables x, puiss : réel
n, i : entier
Début
Ecrire (" Entrez respectivement les valeurs de x et n ")
Lire (x, n)
puiss ← 1
Pour i 1 à n
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin

75
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Pour : exemple 1 (forme 2)
o Calcul de x à la puissance n où x est un réel non nul et n un entier positif
ou nul (forme 2 avec un pas négatif)
Algorithme Puissance
Variables x, puiss : réel
n, i : entier
Début
Ecrire (" Entrez respectivement les valeurs de x et n ")
Lire (x, n)
puiss ← 1
Pour i n à 1 par pas -1
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
76
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles Pour :
o Exercice :
Ecrire algorithme qui demande à l’utilisateur de saisir un nombre de
valeur, et chaque fois il demande de saisir une valeur et ensuite calcule
la somme de ses valeurs

77
Chapitre
 Les instructions de base
1
• Instructions itératives : les boucles
 Les boucles Pour :
o Exercice : Correction

Algorithme FaitLeTotal
variables nbVal, cpt : entiers
valeur, totalValeurs: réels
Début
Ecrire ("Combien de valeurs voulez-vous saisir ?")
Lire (nbVal)
totalValeurs  0 // initialisation du total à 0 avant la somme
Pour cpt  1 à nbVal faire // traitement qui se répète nbVal fois
Ecrire ("Donnez une valeur :")
Lire (valeur)
totalValeurs  totalValeurs+ valeur //calcul de la somme
Finpour
Ecrire ("Le total des ",nbVal, "valeurs est ", totalValeurs) //Affichage des résultats
Fin
78
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
 Les boucles imbriquées
o Les instructions d'une boucle peuvent être des instructions itératives.
Dans ce cas, on a des boucles imbriquées
o Exemple:
Pour i  1 à 5 OK
Pour j  1 à i OOK
écrire("O") OOOK
FinPour OOOOK
écrire ("K") OOOOOK
FinPour

79
Chapitre 1
 Les instructions de base
• Instructions itératives : les boucles
o Choix d'un type de boucle
 Si on peut déterminer le nombre d'itérations avant l'exécution de la
boucle, il est plus naturel d'utiliser la boucle Pour
 S'il n'est pas possible de connaître le nombre d'itérations avant
l'exécution de la boucle, on fera appel à l'une des boucles TantQue ou
répéter jusqu'à
 Pour le choix entre TantQue et jusqu'à :
- Si on doit tester la condition de contrôle avant de commencer les
instructions de la boucle, on utilisera TantQue
- Si la valeur de la condition de contrôle dépend d'une première
exécution des instructions de la boucle, on utilisera répéter jusqu'à

80
Chapitre 1
 Les tableaux :
• Les tableaux informatiques sont très proches de la notion de
vecteur en mathématique.
• Informatique :
 tableau de 5 flottants : 2.0 -1.2 2.0 0.0 5.3
indices : 0 1 2 3 4
• Mathématique :
 x Є Rn
 x = (x1; x2; ....; xn) ; xi Є R
 Le plus souvent, les indices commencent à 0 en informatique, et
à 1 en mathématique.

81
Chapitre 1
 Les tableaux :
• Un tableau est une collection homogène de données, ordonnée
et de taille statique.
• En mémoire c’est un ensemble d'octets permettant de
représenter une liste d'éléments de même type.
• Chaque élément est repéré par un indice (son rang dans le
tableau). Les indices commence de 0 jusqu’à N-1
• Exemple : Tableau t

- 15 est l'élément d'indice 0, il est noté en par t[0].


- 100 est l'élément d'indice 4, il est noté en par t[4].
82
Chapitre 1
 Les Tableaux :
• Les tableaux à 1 dimension (Vecteur):
 La déclaration :
 Syntaxe en pseudo-code est :
Tableau Identificateur [Taille constante] : Type
- La Taille du tableau est le nombre de ses éléments. Elle ne peut être
une variable. Elle doit être une constante définie au moment (ou avant)
de la déclaration

 Exemple :
Tableau a [100] : Entier

83
Chapitre 1
 Les Tableaux :
• Les tableaux à 1 dimension (Vecteur):
 L’initialisation :
 Syntaxe en pseudo-code est :
Tableau Identificateur *n+ ← ,v1, · · · , vn- : Type

 Exemple :
Tableau voyelles [6] : caractère
voyelles*6+ ← ,’a’,’e’,’i’,’o’,’u’,’y’-
Ou
Tableau voyelles *6+ ← ,’a’,’e’,’i’,’o’,’u’,’y’- : caractère

84
Chapitre 1
 Les Tableaux :
• Les tableaux à 1 dimension (Vecteur):
 L’initialisation :
 L’accès :
o Syntaxe en pseudo-code est :
Identificateur [index]
o Exemple :
voyelles[i]
voyelles*3+ : correspond à la lettre ‘o’

85
 Les Tableaux :
Chapitre 1
• Les tableaux à 1 dimension (Vecteur):
 Exemple
Algorithme Tableau
Constantes :
n = valeur : entier
variables :
Tableau t [n] : réel
i: entier
Début
i0
Tantque (i < n) faire
Ecrire ("valeur de l’élément : " ,i)
Lire (t[i])
i  i+1
finTantque
Fin 86
 Les Tableaux :
Chapitre 1
• Les tableaux à 1 dimension (Vecteur):
 Exercice
Ecrivez un algorithme qui permet d’afficher les éléments d’un
tableau de 20 entiers (en utilisant une boucle Pour)

87
 Les Tableaux :
Chapitre 1
• Les tableaux à 1 dimension (Vecteur):
 Exercice
Ecrivez un algorithme qui permet d’afficher les éléments d’un tableau de
20 entiers (en utilisant une boucle Pour)

Algorithme Tableau
variables :
Tableau t [20] : entier
i: entier
Début
Pour i 0 à 19
Ecrire (t[i])
finPour
Fin
88
 Les Tableaux :
Chapitre 1
• Les tableaux à 1 dimensions (Vecteur):
 Les chaines de caractères
o Une chaîne de caractères est un tableau de caractères.
o Elle représente un cas particulier des tableaux qui bénéficie de certains
traitements particuliers en plus de ceux réservés aux tableaux en général.
o Exp : chaîne nom ← "Burma" : Déclaration d’une variable de type chaîne et
initialisée par la constante Burma
o Les opérations :

89
 Les Tableaux :
Chapitre 1
• Les tableaux à 2 dimensions (Matrice):
o On peut avoir des tableaux à deux dimensions (permettant ainsi de
représenter par exemple des matrices à deux dimensions)
o On déclare une matrice à deux dimensions de la façon suivante :
Tableau[intervallePremièreDimension][intervalleDeuxièmeDimension]
: type des éléments
o On accède (en lecture ou en écriture) à la i ème ,j ème valeur d’un
tableau T en utilisant la syntaxe suivante : T [i][j]
o Exp : tab [3][2] : Réel
- tab[2][1]  -1.2 : met la valeur -1.2 dans la case (2,1)du
tableau
- En considérant le cas où a est une variable de type Réel :
a  tab[2][1] : met -1.2 dans a
90
 Les Tableaux :
Chapitre 1
• Les tableaux à 2 dimensions (Matrice):
o Remarque : le sens que vous donnez à chaque dimension est
important et il ne faut pas en changer lors de l’utilisation du
tableau
o Par exemple, le tableau tab défini de la façon suivante :
tab [3][2] : Réel
tab[1][1]  2.0; tab[2][1]  -1.2; tab[3][1]  3.4
tab[1][2] 2.6; tab[2][2] -2.9; tab[3][2] 0.5
peut permettre de représenter l’une des deux matrices suivantes :

91
 Les Tableaux :
Chapitre 1
• Les tableaux à n dimensions :
o Par extension, on peut aussi utiliser des tableaux à plus
grande dimension
o Leur déclaration est à l’image des tableaux à deux
dimensions, c’est-à-dire :
o tableau [intervalle1][intervalle2]. . . [intervallen] : type des
valeurs
o Par exemple :
 tab[10][9][8] : Entier
 Ainsi que leur utilisation :
tab[2][1][3] 10
a  tab[2][1][3]

92
 Les Tableaux :
Chapitre 1
• Exercice 1:
o Ecrivez un algorithme calculant la somme des valeurs d’un
tableau (on suppose que le tableau a été préalablement saisi).

93
 Les Tableaux :
Chapitre 1
• Exercice 1:
o Ecrivez un algorithme calculant la somme des valeurs d’un tableau (on
suppose que le tableau a été préalablement saisi).
• Constantes N =100: Entier
Variables i, Som : Entier
Tableau T[N] : Entier

Début
Pour i 0 à N-1
lire (T[i])
finPour
Som ← 0
Pour i ← 0 à N - 1
Som ← Som + T[i]
FinPour
écrire ("Somme des éléments du tableau : ", Som)
Fin

94
 Les Tableaux :
Chapitre 1
• Exercice 2 :
o Ecrivez un algorithme qui permet la saisie des éléments d’un
tableau de N valeurs (le nombre N est donné par l’utilisateur).
Ensuite, chaque valeur du tableau doit être augmentée par la
valeur de son rang dans la tableau (Exp : la valeur tab[2] doit être
augmentée de 2) . Et à la fin afficher le nouveau contenu du
tableau.

95
 Les Tableaux :
Chapitre 1
• Exercice 2:
• Constantes N = 100: Entier
Variables i, N : Entier
Tableau T[N] : Entier
Début
Pour i 0 à N-1
lire (T[i])
finPour
Pour i ← 0 à N - 1
T*i+ ← T*i+ + i
écrire ("T[",i, "]=",T[i])
FinPour
Fin

96
 Les Tableaux :
Chapitre 1
o Les algorithmes de tri :

 Trier un tableau : ranger les éléments d’un tableau en ordre


croissant ou décroissant

 Il existe plusieurs algorithmes (méthodes) de tri qui se


différencient par leur complexité d’exécution et leur complexité
de compréhension pour le programmeur.

 Dans la suite du cours on ne fera que des tris en ordre croissant

97
 Les Tableaux : Chapitre 1
o Les algorithmes de tri :
 Le tri par sélection :
• Principe :
1. Trouver le plus petit élément et le mettre au début : 1er rang du tableau
2. Trouver le 2ème plus petit et le mettre en 2ème position: 2ème rang du tableau
3. Trouver le 3e plus petit élément et le mettre à la 3e position : 3ème rang du
tableau
4. . . .
• Au i-ème passage, on sélectionne le plus petit élément parmi les positions i…n et
on l'échange ensuite avec T[i].
• Exemple :
Étape 1: on cherche le plus petit parmi les 5 éléments du tableau. On l’identifie en
troisième position, et on l’échange alors avec l’élément 1 :

Étape 2: on cherche le plus petit élément, mais cette fois à partir du deuxième
élément. On le trouve en dernière position, on l'échange avec le deuxième:
Étape 3:
98
 Les Tableaux : Chapitre 1
o Les algorithmes de tri :
 Le tri par sélection :
• L’algorithme : En considérant le tableau T de taille N
Pour i allant de 0 à N-2 //Fin à n-2 !
indice_ppe ← i
Pour j allant de i + 1 à N-1 // Chercher l’indice du plus petit à partir de i.
Si (T[j] <T[indice_ppe] ) alors
indice_ppe ← j
Finsi
FinPour
temp ← T[indice_ppe] // Echange
T[indice_ppe] ← T[i]
T[i] ← temp
FinPour
99
 Les Tableaux : Chapitre 1
o Les algorithmes de tri :
 Le tri par insertion (le tri du joueur de cartes !):
• Principe :
1. Ordonner les deux premiers éléments
2. Insérer le 3e élément de manière à ce que les 3 premiers éléments soient triés
3. Insérer le 4e élément à “sa” place pour que 4 premiers éléments soient triés
4. ….
5. Insérer le nième élément à sa place.
• A la fin de la ième itération, i, tous les éléments entre les positions 0 à i-1 sont
triés. Les éléments à partir de la position i ne sont pas triés.
• Pour insérer l’élément T*i-1] :
 Si T[i-1+ ≥T*i-2] : insérer T[i-1] à la ième position !
 Si T[i-1] <T[i-2] : déplacer T[i-1+ vers le début du tableau jusqu’à la position j ≤ i-1
telle que T[i-1+ ≥T*j-1+ et l’insérer à la position j.

100
 Les Tableaux : Chapitre 1
o Les algorithmes de tri :
 Le tri par insertion (le tri du joueur de cartes !):
• Exemple:
Étape 1: on commence à partir du 2ième élément du tableau (valeur 4). On
cherche à l’insérer à la bonne position par rapport au sous tableau déjà trié
(formé de la valeur 9) :

Étape 2: on considère l’élément suivant (1) et on cherche à l’insérer dans une


bonne position par rapport au sous tableau trié jusqu’à ici (formé de 4 et 9):

Étape 3:

Étape 4:

101
 Les Tableaux : Chapitre 1
o Les algorithmes de tri :
 Le tri rapide:
• Principe :
• Le tri rapide est un tri récursif basé sur l'approche "diviser pour
régner« (consiste à décomposer un problème d'une taille donnée à
des sous problèmes similaires mais de taille inférieure faciles à
résoudre)
1. on considère un élément du tableau qu'on appelle pivot
2. on partitionne le tableau en 2 sous tableaux : les éléments
inférieurs ou égaux au pivot et les éléments supérieurs au pivot.
On peut placer ainsi la valeur du pivot à sa place définitive entre
les deux sous tableaux
3. on répète récursivement ce partitionnement sur chacun des sous
tableaux crées jusqu'à ce qu'ils soient réduits à un seul élément
102
 Les Tableaux : Chapitre 1
o Les algorithmes de tri :
 Le tri rapide:
• Exemple :

103
 Les Tableaux : Chapitre 1
o Les algorithmes de tri :
 Le tri rapide:
• L’algorithme :
triRapide (début, fin) :
Si (le tableau a un seul élément ) alors
Arrêter
Sinon
Choisir le pivot
Réorganiser le tableau selon notre pivot
triRapide(début, pivot - 1)
triRapide(pivot + 1, fin)

104
Chapitre 1
 Les sous-algorithmes :
o Pourquoi?

 Dès qu’on commence à écrire des programmes importants, il


devient difficile d’avoir une vision globale sur son fonctionnement
et de traquer les erreurs
 Exemple: Un algorithme qui calcule la partie entière de deux
nombres réel, puis affiche la plus grande valeur des deux, et ensuite
calcule la somme et la moyenne des deux nombres entiers obtenus.
• Que faire ? décomposer le problème en sous problèmes et
trouver une solution à chacun puis regrouper le tout dans un seul
algorithme

 En Algorithmique, chaque solution partielle donne lieu à un sous-


algorithme qui fera partie d’un algorithme complet pour pouvoir
être exécuté.
105
Chapitre 1
 Les sous-algorithmes :
o Définitions :

 Un sous-algorithme est un bloc faisant partie d’un algorithme.

 Il est déclaré dans la partie entête (avant le début de l’algorithme)


puis appelé dans le corps de l’algorithme.

 Étant donné qu’il s’agit d’un bloc à part entière, il possède


éventuellement un en-tête, une série de traitements, et une
gestion des résultats tout comme l’algorithme qui le contient.

106
Chapitre 1
 Les sous-algorithmes :
o Définitions :
 Les variables globales et les variables locales (portée de variables)
• Un sous-algorithme utilise les variables déclarées dans le corps de
l’algorithme = appelées variables globales.

• Il peut aussi avoir ses propres variables = variables locales


qui sont déclarées dans l’espace qui lui est réservé ; mais qui ne
peuvent être utilisées que dans ce sous-algorithme et nulle part
ailleurs car leur portée (visibilité) est limitée au bloc qui les
contient.

• L’espace de ces variables locales n’est réservé que lorsque le sous-


algorithme est appelé et est libéré dès la fin de l’exécution.
107
Chapitre
 Les sous-algorithmes :
1
o Définitions :
 Les paramètres d’un sous –algorithme :
• Un sous-algorithme est déclaré de manière générale c.-à-d qu’il peut être
appelé plusieurs fois avec différentes valeurs grâce à des arguments
(facultatifs) = paramètres et sont clairement déclarés, dans l’entête du
sous-algorithme.
• Un paramètre est une valeur du bloc principal dont le sous-algorithme a
besoin pour exécuter avec des données réelles l’enchaînement d’actions
qu’il est chargé d’effectuer.
• On distingue deux types de paramètres :
- Les paramètres formels sont la définition du nombre et du type de
valeurs que devra recevoir le sous-algorithme pour se mettre en route
avec succès. On déclare les paramètres formels pendant la déclaration du
sous-algorithme
- Les paramètres effectifs sont des valeurs réelles (constantes ou
variables) reçues par le sous-algorithme au cours de l’exécution du bloc
principal. On les définit indépendamment à chaque appel du sous-
algorithme dans l’algorithme principal.

108
Chapitre 1
 Les sous-algorithmes :
o Définitions :
 L’exécution :
• L’exécution d’un sous-algorithme se fait par une instruction
d’appel.
• L’application de cette instruction génère un saut vers le sous-
algorithme appelé.
• La terminaison de ce sous-algorithme redémarre la suite
d’instruction interrompue par l’appel du sous-algorithme.

109
Chapitre 1
 Les sous-algorithmes :
o Types de sous-algorithme
• Un sous-algorithme peut se présenter sous forme de fonction ou de
procédure.

• Une fonction : est un sous-algorithme qui, à partir de donnée(s),


calcul et rend à l’algorithme Un et Un seul résultat.

• Une procédure : fait un traitement mais ne retournent pas de


résultat

110
 Les sous-algorithmes :
Chapitre 1
o Types de sous-algorithme
 Procédure :
• Une procédure est un bloc d’instructions nommé et déclaré dans l’entête de
l’algorithme et appelé dans son corps à chaque fois que le programmeur en a
besoin.
• Déclaration d’une procédure :

• L’appel d’une procédure peut être effectué en spécifiant, au moment souhaité,


son nom et éventuellement ses paramètres ; cela déclenche l’exécution des
111
instructions de la procédure.

o
Les sous-algorithmes :
Types de sous-algorithme
Chapitre 1
 Procédure :
• Exemple : un algorithme utilisant une procédure qui calcule une somme de
100 nombres

112
 Les sous-algorithmes : Chapitre 1
o Types de sous-algorithme
 Fonction :
• Une fonction est un bloc d’instructions qui retourne obligatoirement une et une
seule valeur résultat à l’algorithme appelant.
• Une fonction n’affiche jamais la réponse à l’écran car elle la renvoie simplement à
l’algorithme appelant.
• Déclaration d’une fonction:

113
Chapitre 1
 Les sous-algorithmes :
o Types de sous-algorithme
 Fonction :
• Déclaration d’une fonction:

• Etant donné qu’une fonction a pour but principal de renvoyer une valeur,
il est donc nécessaire de préciser le type de la fonction qui est en réalité le
type de cette valeur.

• Un appel de fonction est une expression d’affectation de manière à ce que


le résultat soit récupéré dans une variable globale :
Nom_variable-globale  Nom_Fonction (paramètres) ;

114
Chapitre 1
 Exemple: L’algorithme précédent, qui calcule une somme de N nombres, peut
utiliser une fonction au lieu d’une procédure.

115
Chapitre 1
 Les sous-algorithmes :
o Types de sous-algorithme
 Le passage de paramètres:
• Les échanges d'informations entre une procédure et le sous algorithme
appelant se font par l'intermédiaire de paramètres.

• Il existe deux principaux types de passages de paramètres qui permettent


des usages différents :
- Passage par valeur : le paramètre formel reçoit uniquement une copie
de la valeur du paramètre effectif. La valeur du paramètre effectif ne sera
jamais modifiée.

- Passage par référence ou par adresse : procédure utilise l'adresse du


paramètre effectif. Lorsqu'on utilise l'adresse du paramètre, on accède
directement à son contenu. La valeur de la variable effectif sera donc
modifiée. Les paramètres passés par adresse sont précédés du mot clé Var.

116
 Les sous-algorithmes :
Chapitre 1
o Types de sous-algorithme
 Le passage de paramètres:
• Exemple de Passage par valeur :
Algorithme Passage_par_valeur
Variables N : entier
//Déclaration de la procédure P1
Procédure P1(A : entier)
Début
AA*2
écrire(A)
FinProc
//Algorithme principal
Début
N 5
P1(N)
écrire(N)
Fin

• Lors de l'appel de la procédure P1, la valeur du paramètre effectif N est recopiée dans le
paramètres formel A. La procédure effectue alors le traitement et affiche la valeur de la
variable A, dans ce cas 10.
•Après l'appel de la procédure, l'algorithme affiche la valeur de la variable N dans ce cas :5
117
•La procédure ne modifie pas le paramètre qui est passé par valeur.
 Les sous-algorithmes :
Chapitre 1
o Types de sous-algorithme
 Le passage de paramètres:
• Exemple de Passage par référence :
Algorithme Passage_par_référence
Variables N : entier
//Déclaration de la procédure P1
Procédure P1(Var A : entier)
Début
AA*2
écrire(A)
FinProc
//Algorithme principal
Début
N 5
P1(N)
écrire(N)
Fin

•A l'exécution de la procédure P1, l'instruction écrire(A) permet d'afficher à l'écran 10.


•Au retour dans l'algorithme principal, l'instruction écrire(N) affiche également 10.
Dans cet algorithme le paramètre passé correspond à la référence (adresse) de la
variable N. Elle est donc modifiée par l'instruction : A  A *2
118
Chapitre 1
 Les sous-algorithmes :
o Types de sous-algorithme :
 Exercice : Un algorithme qui calcule et affiche la valeur absolue
d’une valeur en utilisant une fonction

119
 Les sous-algorithmes :
Chapitre 1
o Types de sous-algorithme :
 Exercice : Correction

120
• Références :
 Cours d’Informatique, 1ère année SM/SMI, Info2 Département de
Mathématiques et d’Informatique, Université Mohammed V.

 Cours Informatique générale, Algorithmique, Pr. François de


Bertrand de Beuvron et Jean-Philippe Kotowicz, INSA- Strasbourg,
INSA-Rouen.

 Cours algorithmique et programmation en langage C, Pr. Zahi


Azeddine, Département Informattique, USMBA.

 Cours Initiation à l’algorithmique, Pr. Djamel


Benmerzoug, Département TLSI, Faculté des nouvelles technologies
d’information et de communication, Université Canstantine2.

121

Vous aimerez peut-être aussi