Professional Documents
Culture Documents
Plan...
Rappels
Les sous-programmes
Variables locales et variables globales
Structure dun programme
Les fonctions
Les procdures
Vocabulaire...
Dans ce cours nous allons parler de programme et de sous-programme
Il faut comprendre ces mots comme programme algorithmique
indpendant de toute implantation
Rappels...
La mthodologie de base de linformatique est :
1. Abstraire
Retarder le plus longtemps possible linstant du codage
2. Dcomposer
"... diviser chacune des difficults que jexaminerai en autant de parties quil
se pourrait et quil serait requis pour les mieux rsoudre." Descartes
3. Combiner
Rsoudre le problme par combinaison dabstractions
Par exemple...
Rsoudre le problme suivant :
crire un programme qui affiche en ordre croissant les notes dune promotion
suivies de la note la plus faible, de la note la plus leve et de la moyenne
Sous-programme...
Donc crire un programme qui rsout un problme revient toujours crire
des sous-programmes qui rsolvent des sous parties du problme initial
En algorithmique il existe deux types de sous-programmes :
Les fonctions,
Les procdures.
Rgle de nommage...
Nous savons maintenant que les variables, les constantes, les types dfinis par
lutilisateur (comme les numrateurs) et que les sous-programmes possdent
un nom
Ces noms doivent suivre certaines rgles :
Ils doivent tre explicites ( part quelques cas particuliers, comme par exemple les variables i et j pour les
boucles)
Ils ne peuvent contenir que des lettres et des chiffres
Ils commencent obligatoirement par une lettre
Les variables et les sous-programmes commencent toujours par une minuscule
Les types commencent toujours par une majuscule
Les constantes ne sont composes que de majuscules
Lorsquils sont composs de plusieurs mots, on utilise les majuscules (sauf pour les constantes) pour sparer
les mots (par exemple JourDeLaSemaine)
Une variable dfinie au sein dun sous programme est appele variable locale
La porte dun variable locale est uniquement le sous-programme qui la dclare
Lorsque le nom dune variable locale est identique une variable globale, la
variable globale est localement masque
Dans ce sous-programme la variable globale devient inaccessible
Variables, fonctions, procedures p.8/32
Les paramtres...
Un paramtre dun sous-programme est une variable locale particulire qui est
associe une variable ou constante (numrique ou dfinie par le programmeur) du
(sous-)programme appelant :
Puisque quun paramtre est une variable locale, un paramtre admet un type
Lorsque le (sous-)programme appelant appelle le sous-programme il doit indiquer la variable (ou la
constante), de mme type, qui est associe au paramtre
Par exemple, si le sous-programme sqr permet de calculer la racine carre dun rel:
Ce sous-programme admet un seul paramtre de type rel positif
Le (sous-)programme qui utilise sqr doit donner le rel positif dont il veut calculer la racine carre, cela peut
tre :
une variable, par exemple a
une constante, par exemple 5.25
Par exemple :
le sous-programme sqr permettant de calculer la racine carre dun nombre
admet un paramtre en entre
le sous-programme crire qui permet dafficher des informations admet n
paramtres en entre
Les fonctions...
Les fonctions sont des sous-programmes admettant des paramtres et
retournant un seul rsultat(comme les fonctions mathmatiques
y=f(x,y,. . . )
les paramtres sont en nombre fixe ( 0)
une fonction possde un seul type, qui est le type de la valeur retourne
le passage de paramtre est uniquement en entre: cest pour cela quil
nest pas prcis
lors de lappel, on peut donc utiliser comme paramtre des variables, des
constantes mais aussi des rsultats de fonction
Les fonctions...
On dclare une fonction de la faon suivante :
fonction nom de la fonction (paramtre(s) de la fonction) : type de la valeur
retourne
Dclaration variable locale 1 : type 1; . . .
dbut
instructions de la fonction avec au moins une fois linstruction retourner
fin
On utilise une fonction en prcisant son nom suivi des paramtres entre
parenthses
Les parenthses sont toujours prsentes mme lorsquil ny a pas de
paramtre
Exemple de programme...
Programme exemple1
Dclaration a : Entier, b : Naturel
fonction abs (unEntier : Entier) : Naturel
Dclaration valeurAbsolue : Naturel
dbut
si unEntier 0 alors
valeurAbsolue unEntier
sinon
valeurAbsolue -unEntier
finsi
retourner valeurAbsolue
fin
dbut
crire("Entrez un entier :")
lire(a)
b abs(a)
crire("la valeur absolue de ",a," est ",b)
fin
Un autre exemple...
fonction minimum2 (a,b : Entier) : Entier
dbut
si a b alors
retourner b
finsi
retourner a
fin
fonction minimum3 (a,b,c : Entier) : Entier
dbut
retourner minimum2(a,minimum2(b,c))
fin
Les procdures...
Les procdures sont des sous-programmes qui ne retournent
aucun rsultat
Par contre elles admettent des paramtres avec des passages :
en entre, prfixs par Entre (ou E)
en sortie, prfixs par Sortie (ou S)
en entre/sortie, prfixs par Entre/Sortie (ou E/S)
Gnralement le nom dune procdure est un verbe
Les procdures...
On dclare une procdure de la faon suivante :
procdure nom de la procdure ( E paramtre(s) en entre; S paramtre(s)
en sortie; E/S paramtre(s) en entre/sortie )
Dclaration variable(s) locale(s)
dbut
instructions de la procdure
fin
Exemple de programme...
Programme exemple2
Dclaration a : Entier, b : Naturel
procdure echanger ( E/S val1 Entier; E/S val2 Entier;)
Dclaration temp : Entier
dbut
temp val1
val1 val2
val2 temp
Lors de lexcution de la procdure
fin
dbut
echanger, la variable a et le paramtre
crire("Entrez deux entiers :")
val1 sont associs par un passage de
lire(a,b)
echanger(a,b)
paramtre en entre/sortie : Toute modcrire("a=",a," et b = ",b)
ification sur val1 est effectue sur a (de
fin
Fonctions/procdures rcursives
Une fonction ou une procdure rcursive est une fonction
qui sappelle elle mme.
Exemple :
fonction factorielle (n: Naturel) : Naturel
dbut
si n = 0 alors
retourner 1
finsi
retourner n*factorielle(n-1)
fin
4*factorielle(3) = 4*3*2*1
factorielle(3)
3*factorielle(2) =
3*2*1
factorielle(2)
2*factorielle(1) =
2*1
factorielle(1)
1*factorielle(0) =
factorielle(0)
1
1*1
Rcursivit : Caractrisation
On peut caractriser un algorithme rcursif par plusieurs proprits:
Le mode dappel : direct/indirect
Le nombre de paramtres sur lesquels porte la rcursion : arit
Le nombre dappels rcursifs : ordre de rcursion
Le genre de retour : terminal/non terminal.
Naturel) :