Académique Documents
Professionnel Documents
Culture Documents
Prof. A.SABOUR
Syllabus du cours ...
Objectif : L’acquisition des notions fondamentales de l’algorithmique.
4
Définition
Algorithmique:
5
Définition
Définition : Un algorithme est un ensemble d'opérations de calcul
et de leurs propriétés.
6
Définition
Qu’est-ce qu’un programme?
Un programme est donc une suite d'instructions
exécutées par la machine. La machine a son propre langage
appelé langage machine.
Un programme est l’expression d’un algorithme par une
machine donnée dans un langage de programmation donné
en utilisant le répertoire d’actions(opérations, instructions)
et les règles de composition propres à cette machine et à ce
langage donnés.
Un programme est un assemblage et un enchaînement
d’instructions élémentaires écrit dans un langage de
programmation, et exécuté par un ordinateur afin de
traiter les données d’un problème et renvoyer un ou
plusieurs résultats.
7
Introduction a l'algorithmique
Pour être bon en algorithmique ...
8
Introduction a l'algorithmique
Pour être bon en algorithmique ...
9
Introduction a l'algorithmique
Pour être bon en algorithmique ...
Niveaux de développement
1. Analyse : niveau conceptuel ;
2. Algorithmique : niveau logique ;
3. Programmation : niveau physique.
12
L'algorithmique et la programmation ...
13
Environnement algorithmique
Niveau logique du développement
14
Environnement algorithmique
Représentation d'un algorithme
15
pseudo-code
les algorithmes sont rédigés dans un langage à mi-
chemin entre le français et les langages de
programmation, dit pseudo-code .
plus pratique pour écrire un algorithme
représentation largement utilisée
Exemple
problème du tri
Entrée: une séquence de n nombres
(a1, : : : ,an)
Sortie: une permutation (a1’; : : :
;an’) de la séquence d’entrée:
a1’<a2’<….<an’
Exemple : (31;41;59;26;41;58)
(26;31;41;41;58;59)
16
Les instructions fondamentales
17
Caractéristiques d'un algorithme
Un algorithme est l'énoncé dans un langage bien défini
d'une suite d'opérations permettant de répondre au
problème. Un algorithme doit donc être :
lisible: l'algorithme doit être compréhensible même par
un non-informaticien
de haut niveau: l'algorithme doit pouvoir être traduit en
n'importe quel langage de programmation, il ne doit donc
pas faire appel à des notions techniques relatives à un
programme particulier ou bien à un système d'exploitation
donné
précis: chaque élément de l'algorithme ne doit pas porter à
confusion, il est donc important de lever toute ambiguïté
concis: un algorithme ne doit pas dépasser une page. Si
c'est le cas, il faut décomposer le problème en plusieurs
sous-problèmes
structuré: un algorithme doit être composé de différentes
parties facilement identifiables
18
II- Les instructions
de base
pour commencer :
un exemple
- ensuite :
• les variables
• saisir et afficher des données
• simuler un algorithme
• faire des tests
• répéter des traitements
- pour terminer : les principales erreurs a éviter
Un premier algorithme
Algorithme EleveAuCarre
{Cet algorithme calcule le carré du nombre que lui fournit l'utilisateur}
variables unNombre, sonCarre: entiers
début
{saisie d’un nombre}
afficher("Quel nombre voulez-vous elever au carre?")
saisir(unNombre)
{calcul du carré du nombre saisi}
sonCarre ← unNombre Χ unNombre
{affichage du résultat}
afficher("Le carre de ", unNombre)
afficher("c'est ", sonCarre)
fin
20
Un premier algorithme
Algorithme EleveAuCarre
{Cet algorithme calcule le carré du nombre que lui fournit l'utilisateur}
variables unNombre, sonCarre: entiers
début
{saisie d’un nombre}
afficher("Quel nombre voulez-vous elever au carre?")
saisir(unNombre)
{calcul du carré du nombre saisi}
sonCarre ← unNombre Χ unNombre
{affichage du résultat}
afficher("Le carre de ", unNombre)
afficher("c'est ", sonCarre)
fin
21
Un premier algorithme
Algorithme EleveAuCarre
variables unNombre, sonCarre: entiers Bloc de Déclaration
début
afficher("Quel nombre voulez-vous elever au carre?")
saisir(unNombre) Bloc de
Traitement
sonCarre ← unNombre Χ unNombre Ou
afficher("Le carre de ", unNombre) Bloc
actions
afficher("c'est ", sonCarre)
fin
22
Syntaxe général de l’algorithme
Exemple :
Algorithme toto
{les constantes: il est obligatoire de leur donner une valeur dès leur
déclaration }
CONST ANTS (titi : entier) 10
(tutu: chaîne) "bonjour!"
{ les variables au sens strict} déclarations
VAR IABLES riri, fifi : réels
loulou : chaîne
Debut
<Instruction1>;
<Instruction2>;
…. Corps de l’algorithme
<Instruction3>;
Fin
23
Syntaxe général de l’algorithme(suite)
Le moule d’un algorithme
Dans la partie déclarations, nous trouvons :
Déclaration de constantes
déclaration de variables
déclaration de fonctions
suite d'instructions
Structure alternative
Structure répétitive
24
Un premier algorithme
Bloc de Déclaration
Serve à Déclarer les variables et les constantes d’un algorithme donné
exemple :
constantes (TVA : réel) ← 19,6
(TITRE : chaîne) ← "Resultat "
26
Les variables(suite)
27
Les variables(suite)
Nom de la variable
C’est une suite de lettres et de chiffres
commençant nécessairement par une lettre
Le nombre maximal de caractères imposé varie
selon les langages
La lisibilité des programmes dépend de l’habilité à
choisir des noms représentatifs
Le nom de la variable doit être le plus
représentatif possible du contenu de celle-ci pour
faciliter la lecture de l'algorithme. En revanche, il
ne doit pas non plus être trop long pour ne pas
nuire à la lisibilité de l'ensemble.
28
Les variables(suite)
Nom de la variable
Exemple
Je veux mémoriser l'âge d'une personne dans une variable, j'ai le
choix de l'appeler :
a
âge
age
ageDeLaPersonneDontJeSuisEntrainDeParler
Remarque :
Le premier cas est trop court, si je n'ai pas lu la description
plus haut, je suis totalement perdu. Le deuxième cas ne
convient pas non plus car on évitera tout caractère accentué
dans les noms de variable. Le dernier cas est certes très précis,
mais tellement long qu'il en devient illisible. Bref, le troisième
cas semble le plus approprié
29
Les variables(suite)
Type de la variable
Propriété :
30
Les variables(suite)
Type de la variable
31
Les variables(suite)
Type de la variable
Chaîne de caractères : représentant un texte,
contenant un ou plusieurs caractères(ex: ’’Bonjour
tout le monde’’)
Tous les traducteurs de langages prennent en compte
cette notion de type par des instructions de
déclaration de type
Exemple:
Variable Moyenne : réel; {Moyenne en numérique}
Variable NbreEtudiant : entier; {NbreEtudiant en
numérique}
Variable c1, lettre, z : caractère;
32
Les variables(suite)
Les opérateurs de l’algorithmique
33
Les variables(suite)
Les opérateurs de l’algorithmique
34
Un premier algorithme
Bloc de Déclaration
Signification :
←: opération d’affectation
constantes (const) : mot clé réserver pour déclarer un sous bloc de
constante
variables (var): mot clé réserver pour déclarer un sous bloc de
variable
35
Un premier algorithme
Bloc de Traitement
Suite d’instruction manipulant les données de l’algorithmes et résolvante la
problématique
Syntaxe :
36
La séquence d’instructions
37
Structures Alternatives
38
Structures répétitive
La routine journalière d’un employé est :
Ouvrir guichet
Appeler premier client
TantQue " client dans file d'attente " et " pas fin
de journée "
Traiter client
Appeler client suivant
FinTantQue
Les deux actions "Traiter client" et "Appeler client
suivant" vont se répéter tant que la condition
située derrière l'instruction "Tant que" est vérifiée.
39
Un premier algorithme
Bloc de Traitement
Instruction d’affectation
Syntaxe :
Exemples :
Exemple :
1. affecter une valeur à une variable
Y représente :
Constante ou Nom d’une variable ou Expression logique
41
Les instructions(suite)
Les instructions d’Entrée/Sortie
Un programme est amené à :
Prendre des données par le périphérique(clavier) : rôle de
l’instruction de lecture
Communiquer des résultats par l’intermédiaire du
périphérique(écran) : rôle de l’instruction de l’écriture
Instruction de lecture
Rôle : fournir des données au programme
Syntaxe : saisir(variable)
Exemple : saisir( X) on saisie une valeur pour la stocker après dans
la variable X
Instruction d’écriture
Rôle : fournir des résultats directement compréhensibles
Syntaxe : afficher( variable), afficher(’’chaine de caractères’’)
Exemple : afficher(X), afficher(’’Bonjour’’)
42
Un premier algorithme
Bloc de Traitement
Instruction de Saisir une donnée
Syntaxe :
saisir(<liste de noms de variables>)
<liste de noms de variables>:= variable, <liste de noms de variables>
Fonction :
Exemples
:
saisir(unNombre)
saisir(nom, prenom)
saisir(val)
43
Un premier algorithme
Bloc de Traitement
Instruction d’affichage
Syntaxe :
Fonction :
Instruction permettant de transmettre des informations a l’utilisateur
et/ou de visualiser les informations placées en mémoire.
Exemples :
44
1 Algorithme ParExemple
2 {Saisit un prix HT et affiche le prix TTC correspondant}
3 constantes (TVA : réel) ←19,6
4 (TITRE : chaîne) ←"Resultat"
5 variables prixHT, prixTTC : réels
6 début
7 {préparation du traitement}
8 afficher("Donnez-moi le prix hors taxe :")
9 saisir(prixHT)
10 {calcul du prix TTC}
11 prixTTC ← prixHT * (1+TVA/100)
12 {présentation du résultat}
13 afficher(TITRE )
14 afficher(prixHT, " € H.T. devient ", prixTTC, " € T.T.C.")
15 fin
45
1 constante (SEUIL : entier) ←13
2 variables valA, valB, compteur :
3 entiers
4 mot , tom : chaînes
5 début
Variables
6 valA←5
7 valB←valA valA valB Compteur mot Tom
8 valA←valA X (10 + SEUIL) i 5
9 compteur ← 1 n 6
10 compteur ←compteur + 10 s 7
11 mot ← " Bonjour " t 8
12 tom ← " Au revoir ! " r 9
13 afficher(mot) u 10
14 afficher("valA ", valA) c 11
15 afficher("valB ", valB) t 12
16 afficher("compteur ", compteur ) i 13
17 afficher(tom) o 14
fin n 15
16
Tableau de simulation
46
Quelques erreurs a éviter
non modifiable :
saisir(MAX)
Faux
47
Quelques erreurs a éviter
1 Algorithme CaFaitQuoi?
2 {Cet algorithme .......................................................................................}
3 variables valA, valB : réels
4 début
5 {saisie de deux valeurs }
6 afficher("Donnez-moi deux valeurs :")
7 saisir (valA, valB)
8 afficher("Vous m'avez donne ", valA, " et ", valB)
9 {traitement : ??? }
10 valA←valB
11 valB←valA
12 {présentation du résultat}
13 afficher("Maintenant , mes donnees sont : ", valA, " et ", valB)
14 fin
48
Ce qu’il fallait faire
Déclarer une variable supplémentaire
variables valA, valB, valTemp : entiers
49
Exercices : Instructions
Exercice 1:
Écrire un algorithme qui permet de calculer et afficher la
surface d’un cercle?
Exercice 2:
Écrire un algorithme qui permet de calculer et afficher le
salaire brut d’un ouvrier connaissant le nombre d’heure
et le tarif d’horaire?
Exercice 3 :
Écrire un algorithme qui fait la conversion d’une somme
d’argent donnée en DH, en une somme d’argent en Euro?
50
Traitement a faire si …
1 Algorithme SimpleOuDouble
2 {Cet algorithme saisit une valeur entière et affiche son double si cette donnée
3 est inférieure à un seuil donné}
4 constante (SEUIL : entier) ←10
5 variable val : entier
6 début
7 afficher("Donnez-moi un entier : "); { saisie de la valeur entière}
8 saisir(val)
9 si val < SEUIL; { comparaison avec le seuil}
10 alors afficher ("Voici son double :" , val X2)
11 sinon afficher ("Voici la valeur inchangee :" , val)
12 fsi
13 fin
51
L’instruction conditionnelle
Syntaxe : si <expression logique> alors
<bloc instruction 1>
[ ] signifier que c’est facultatif et que son utilisation dépend des besoins du
programmeur
52
les conditionnelles emboîtées
Problème :
Afficher "Reçu avec mention" si une note est supérieure ou égale à 12,
"Passable" si elle est supérieure à 10 et inferieure a 12, et "Insuffisant" dans
tous les autres cas.
Solution :
53
Conditionnelles séquentielles
Solution 1: Solution 2:
54
exemple
Après la séquence suivante, donner la valeur de la
variable y est telle que :
(a) x = -1
(b) x=0
(c) x = -7
(d) x = -2
si x < -4 alors y←0
sinon si x < -3 alors y ← 4 - x
sinon si x < -1 alors y ← x*x + 6*x + 8
sinon si x < 3 alors y ← 2 - x
sinon y = -2
fsi
…
fsi
55
Les structures de contrôles(suite)
Qu’est ce qu’une condition ?
56
Les structures de contrôles(suite)
Exemple:
‘t’ < ‘w’ VRAI
5>6 FAUX
2< 3 VRAI
Exercice:
Écrire un algorithme qui demande un nombre à
l’utilisateur, et l’informe ensuite si ce nombre est positif
ou négatif (on laisse de côté le cas où le nombre vaut
zéro).
57
Les structures de contrôles(suite)
Conditions composées:
Certains problèmes exigent parfois de formuler des
conditions composées liées entre eux par les
opérateurs logiques suivants : ET, OU, NON, et XOR.
Condition1 ET Condition2 : VRAI, si Condition1 est VRAI et
Condition2 est VRAI.
Condition1 OU Condition2 : VRAI, si Condition1 est VRAI ou bien
Condition2 est VRAI.
Le XOR (ou OU exclusif)
Condition1 XOR Condition2 : VRAI, si Condition1 est VRAI, ou
bien Condition2 est VRAI.
Mais si toutes les deux sont fausses, ou que toutes les deux sont
VRAI, alors le résultat global est considéré comme FAUX.
58
Les structures de contrôles(suite)
le NON inverse une condition : NON(Condition1) est
VRAI si Condition1 est FAUX, et il sera FAUX si
Condition1 est VRAI.
tables de vérité (C1 et C2 représentent deux conditions,
et on envisage à chaque fois les quatre cas possibles) :
C1 et C2 C2 Vrai C2 Faux
C1 Vrai Vrai Faux
C1 Faux Faux Faux
C1 ou C2 C2 Vrai C2 Faux
C1 Vrai Vrai Vrai
C1 Faux Vrai Faux
59
Les structures de contrôles(suite)
C1 xor C2 C2 Vrai C2 Faux
C1 Vrai Faux Vrai
C1 Faux Vrai Faux
Non C1
C1 Vrai Faux
C1 Faux Vrai
Exercices:
Écrire un algorithme qui demande deux nombres à l’utilisateur
et l’informe ensuite si leur produit est négatif ou positif (on
laisse de côté le cas où le produit est nul). Attention toutefois :
on ne doit pas calculer le produit des deux nombres.
Écrire un algorithme qui affiche le salaire brut d’un ouvrier
sachant que les heures supplémentaires de 172 heures sont
payées à 50% de tarifs d’horaire en plus?
60
Exercices
Exercice 1:
Calculer le montant de la facture d’un client ayant commandé une quantité
d’un produit avec un prix unitaire hors taxe
Le taux de T.V.A est : 20%
Les frais de transport sont 0.8 DH de Km , Le client est disposé du frais de
transport si le montant est supérieur 4500 DH
Exercice 2:
Écrire un algorithme qui calcule et affiche le maximum de trois nombre A,B et
C?
Exercice 3:
Écrire un algorithme qui permet de résoudre l’équation du premier degré :
aX+b=0?
Exercice 4:
Écrire un algorithme qui permet de résoudre une équation de second degré :
aX²+bX+c=0 ?
Exercice 5:
Écrire un algorithme qui lie trois nombre A,B et C , puis il détermine si l’un est
égal à la somme de 2 autres sinon il affiche un message « pas de solution »?
61
La sélection sur choix multiples
1 si abreviation = "M"
2 alors afficher( "Monsieur" )
3 sinon si abreviation = "Mme"
4 alors afficher("Madame")
5 sinon si abreviation = "Mlle"
6 alors afficher( "Mademoiselle" )
7 sinon afficher( "Monsieur,Madame " )
8 fsi
9 fsi
10 fsi
1 selon abreviation
2 "M" : afficher( "Monsieur" )
3 "Mme" : afficher( "Madame" )
4 "Mlle" : afficher( "Mademoiselle" )
5 autres : afficher( "Monsieur, Madame ")
6 fin selon
62
L’instruction selon
Syntaxe : selon <identificateur>
(liste de) valeur(s) : instructions
(liste de) valeur(s) : instructions
…
[autres : instructions]
fin selon
Fonction :
[ ] signifier que c’est facultatif et que son utilisation dépend des besoins du
programmeur
63
Structure répétitive
A quoi cela sert-il donc ?
Prenons le cas d’une saisie au clavier (une lecture), où
par exemple, le programme pose une question à
laquelle l’utilisateur doit répondre par O (Oui) ou N
(Non). Mais tôt ou tard, l’utilisateur, risque de taper
autre chose que la réponse attendue.
Alors, dans tout l’algorithme on met en place ce qu’on
appelle un contrôle de saisie, afin de vérifier que les
données entrées au clavier correspondent bien à celles
attendues par l’algorithme.
64
Structure répétitive(suite)
A quoi cela sert-il donc ?
On pourrait essayer avec une structure de contrôle SI.
65
Structure répétitive(suite)
A quoi cela sert-il donc ?
Si l’utilisateur ne se trompe qu’une seule fois, et entre une
valeur correcte à la deuxième demande, c’est parfait.
Par contre, s’il commet une deuxième erreur, il faudrait
rajouter un SI. Et ainsi de suite, on peut rajouter des
centaines de SI, et écrire un algorithme lourd.
La solution consistant à aligner des SI n’est pas correcte
dans ce cas. La seule issue est d’utiliser une
structure de boucle.
66
Structure répétitive(suite)
A quoi cela sert-il donc ?
Qui ce présente ainsi:
TantQue booléen Faire
…
Instructions
…
FinTantQue
Fin
68
Structure répétitive(suite)
A quoi cela sert-il donc ?
Une deuxième approximation de la solution, avec
affectation, consiste à écrire :
Variable Rep :Caractère
Début
Rep ← “X“
afficher (“Voulez vous un café ? (O/N)“)
TantQue Rep <> “O“ ET Rep <> “N“ Faire
saisir(Rep)
FinTantQue
Fin
69
Structure répétitive(suite)
Structure répétitive, dite aussi itérative ou boucle
permet, de répéter une ou plusieurs actions un
certain nombre de fois. On identifie en règle
générale 3 types de répétitive :
TantQue
Répéter Jusqu'à
Pour
70
Structure répétitive(suite)
Tant que
Les répétitives où la condition d’arrêt est placée
au début.
Syntaxe :
Tant que <expression logique> faire
<séquence d’instructions>
Ftantque
TantQue condition
actions
FinTantQue
Ce qui signifie : tant que la condition est vraie, on
exécute les actions.
71
Structure répétitive(suite)
Boucler en comptant, ou compter en bouclant
Il arrive très souvent qu’on ait besoin d’effectuer un
nombre déterminé de passages. Or, a priori, notre
structure TantQue ne sait pas à l’avance combien de tours
de boucle elle va effectuer:
C’est pourquoi une autre structure de boucle est à notre
disposition :
la structure : Pour
72
Structure répétitive(suite)
Variable Num1 : Entier Variable Num1 : Entier
Début Début
Num1 ← 0 Pour Num1 = 1 à 15 Faire
TantQue Num1 < 15 Faire afficher( "Passage numéro : ",
Num1 = Num1 + 1 Num1)
afficher(“Passage numéro : “, Num1) Num1 Suivant
FinTantQue Fin Pour
Fin Fin
Fin Pour
74
Structure répétitive(suite)
la progression du compteur est laissée à votre libre
disposition. Dans la plupart des cas, on a besoin d’une
variable qui augmente de 1 à chaque tour de boucle. On ne
précise alors rien à l’instruction « Pour » ; celle-ci, par
défaut, comprend qu’il va falloir procéder à cette
incrémentation de 1 à chaque passage, en commençant par
la première valeur et en terminant par la deuxième.
Si vous souhaitez une progression plus spéciale, de 2 en 2,
ou de 3 en 3, ou en arrière, de –1 en –1, ou de –10 en –10, il
faut préciser à votre instruction « Pour » en lui rajoutant le
mot « Pas » et la valeur de ce pas.
Quand on met un pas négatif dans une boucle, la valeur
initiale du compteur doit être supérieure à sa valeur finale
si l’on veut que la boucle tourne !
75
Structure répétitive(suite)
Les structures TantQue sont employées dans les
situations où l’on doit procéder à un traitement sur
les éléments d’un ensemble dont on ne connaît pas
d’avance la quantité, comme par exemple :
le contrôle d’une saisie.
la gestion des tours d’un jeu (tant que la partie n’est
pas finie, on recommence).
Les structures Pour sont employées dans les
situations où l’on doit procéder à un traitement sur
les éléments d’un ensemble dont on connaît
d’avance la quantité.
76
Structure répétitive(suite)
Des boucles imbriquées:
De même que qu’une structure SI … ALORS peut
contenir d’autres structures SI … ALORS, une boucle
peut tout à fait contenir d’autres boucles.
Variables Num1, Num2 : Entier
Pour Num1 ← 1 à 15
Afficher (“Il est passé par ici“)
Pour Num2 ← 1 à 6
Afficher (“Il repassera par là“)
Fpour
Fpour
77
Structure répétitive(suite)
Répéter..Jusqu’à :
la condition d’arrêt est placée à la fin
Syntaxe :
Répéter
<séquence d’instructions>
Jusqu’à <expression logique>
Frépéter
Exemple :
Num1:=1
Répéter
Afficher (“Passage numéro : “, Num1)
Num1 = Num1 + 1
Jusqu’à (Num1 >= 15 )
78
Organigramme
Définition
un organigramme est la représentation schématique qui
permet de faire apparaître d’une façon claire et logique
l’enchaînement des différentes opérations.
Symbole embranchement(choix)
Symbole commentaire
79
Les organigrammes
Définition:
1- Un organigramme est une représentation graphique de l' algorithme
2- L’organigramme est une représentation graphique d’un programme
de commande, il est construit à partir d’un algorithme.
Début
Instruction 1
….
fin Instruction n
81
Les organigrammes
82
Les organigrammes
Fonction de type sélection ou décision comportant une seule
entrée et deux sorties possibles, dont une seule peut être
activée après l'évaluation d'une expression conditionnelle définie
dans le symbole.
fausse
Condition
Vraie
83
Organigramme
Exemple :
Condition
Instruction 2 Instruction 1
suite
84
Organigramme
V
instruction
condition
85
Notions de sous-algorithme
Définition
La notion de sous-algorithme est un moyen simple et
efficace de structurer les algorithmes. Elle consiste a
associer un nom a un groupe d'instructions qui peut alors
être active par l'appel de cet identifiant. Cette notion
possède plusieurs avantages.
Intérêt :
Réaliser un découpage d’une tâche en sous-tâche.
Effectuer une seule description d’une tâche commune
Concevoir une application de manière descendante en entrant de
plus en plus dans les détails
Lisibilité
Optimisation
Fiabilité
86
Notions de sous-algorithme
Lisibilité : Lorsqu'un algorithme est convenablement structuré, il est
composé de petites sections ne dépassant pas une page écran. Il est alors
possible de suivre et comprendre le déroulement d'un traitement. La lisibilité
s'en trouve grandement accrue.
Optimisation : Il arrive que des groupes d'instructions se répètent plusieurs
fois dans un même algorithme. En créant une section regroupant ces
instructions il est possible de gagner du temps en conception et en saisie, de
réduire la longueur d'un algorithme et l'espace alloué aux variables, mais
également faciliter les opérations de déboggage et maintenance.
Fiabilité : Un système est d'autant plus fiable que les liaisons entre ses
différents éléments sont plus étroites et limitées. La décomposition d'un
algorithme en différentes sections accroît de façon notable sa fiabilité. La
notion de sous-algorithme, en permettant de définir des zones mémoires
cachées à l'algorithme ou aux autres sous-algorithmes appelants, permet de
limiter cette dispersion de l'information, et de ce fait, d'accroître la fiabilité
globale d'un système.
87
Procédures & Fonctions
Une procedure est un algorithme paramétré, c.-a-d.
un bloc d'instructions, ayant un début et une fin, et
identifie par un nom (l'identifiant)
La signature (ou en-tête) d'un sous-algorithme est le
couple < identifiant, paramètres >. L'arite est le
nombre de paramètres d'un sous-algorithme.
Structure : un sous-algorithme est composé
D’une tête nom sous-algorithme, paramètres(arguments) avec
leur type
D’un corps des déclarations d’objets locaux aux sous-
algorithme, instructions à exécuter
88
Forme d’une Fonction
Une fonction s'écrit en dehors du programme principal sous la forme
89
Procèdures
Dans certains cas, on peut avoir besoin de répéter une tache dans plusieurs endroits du
programme, mais que dans cette tache on ne calcule pas de résultats ou qu'on calcule
plusieurs résultats à la fois
Dans ces cas on ne peut pas utiliser une fonction, on utilise une procédure
Une procédure est un sous-programme semblable à une fonction mais qui ne retourne
rien
FinProcédure
Remarque : une procédure peut ne pas avoir de paramètres
90
Appel d'une procédure
L'appel d'une procédure, se fait dans le programme principale ou dans une autre
procédure par une instruction indiquant le nom de la procédure :
FinProcédure
Algorithme exepmleAppelProcédure
Début
exemple_proc (…)
…
Fin
91
Paramètres d'une procédure
Les paramètres servent à échanger des données entre le programme
principale (ou la procédure appelante) et la procédure appelée
92
Exemple de fonction / fonction
93
Fonctions : exemples
94
Utilisation des fonctions
L'utilisation d'une fonction se fera par simple écriture de son nom dans le
programme principale. Le résultat étant une valeur, devra être affecté ou être
utilisé dans une expression, une écriture, ...
95
Trouver le PGCD de a et b
pgcd(105,30)=pgcd(30,15)=pgcd(15,0)=15
96
Méthode d’Euclide : Algorithme
97
Algorithme d’Euclide
Entrée: a, b deux entiers positifs Trace de l’algorithme pour
a=504 et b=396
Sortie: pgcd(a,b)
504 396 a
108 1
Procédure pgcd(a,b)
Tant que b <> 0 Faire b 396 108 a
Début 72 3
diviser a par b: a = b.q+r, 0 ≤ r < b;
a:=b; b 108 72 a
b:=r; 36 1
Fin
72 36 a
Retourner (a) b 0 2
Fin pgcd
b
Les tableaux
99
Construction des tableaux
Les langages de programmation offrent divers
mécanismes pour construire des tableaux ;
En pseudocode, on va supposer qu'il existe des
fonctions pour les construire :
Exemple:
100
Propriétés des tableaux
Il faut également initialiser le tableau !
I les fonctions qu'on a vues créent des tableaux, mais
ils peuvent contenir n'importe quoi ;
On ne peut pas mélanger les types dans un tableau ;
La taille d'un tableau est constante : on ne peut pas
donc pas la modifier ;
On accède aux éléments d'un tableau grâce a
l'operateur [] ;
Exemple (construire un tableau contenant les entiers de 1 a 10)
n 10 ;
T tab_entiers(n) ;
pour i 1 à n
T[i ] i ;
fin_pour
101
102