0% ont trouvé ce document utile (0 vote)
140 vues43 pages

Algorithmique Fonctions

Transféré par

Mehdi Harras
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
140 vues43 pages

Algorithmique Fonctions

Transféré par

Mehdi Harras
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

1

Algorithmique
TOUHTOUH Samira
Ecole Nationale des Sciences Appliques dEl Jadida
[Link]@[Link]

Plan
Introduction Informatisation dun problme : Langage algorithmique Les variables Les constantes Fonctions dentre-sortie Les structures Les tableaux Les fonctions

Les fichiers

Plan
Introduction Informatisation dun problme : Langage algorithmique Les variables Les constantes Fonctions dentre-sortie Les structures de contrles Les tableaux Les fonctions

Les fichiers

VII. Les tableaux


Introduction Dans certains conditions, les variables que nous connaissons sont trs mal adaptes aux traitements effectuer. Lorsquil sagit dun grand nombre de valeurs de mme types qui se rpte, le traitement est lourd. Imaginons, que nous avons plusieurs traitements effectuer sur des consommations mensuelles deau. Pour conserver ces valeurs en mmoire, nous pouvons prendre 12 variables numriques que nous appellerons, par exemple, Eau1, Eau2,..,Eau12. Pour calculer la consommation mensuelle moyenne sur lanne nous pouvons crire la longue formule : Moyenne = (eau1 + eau2 + eau3+ eau4 + eau5+ eau6+ eau7 + eau8+ eau9+eau10 + eau11+ eau12)/12

Les tempratures 16 heures de chacun des jours dune semaine seront les 7 valeurs de la variable Temp qui est un tableau de 7 variables de type nombre qui sont dsignes par Temp[1], Temp[2], Temp[7]
Temp 1 2 3 4 5 6 7 8 6 7 11 6 Cette case du tableau reprsente la variable Temp[5] dont la valeur est 6 Le nom Temp dsigne lensemble du tableau

8
9

Exemple : Ecrire un algorithme qui permet de calculer la moyenne des tempratures de la semaine : Algorithme calcul de la moyenne des tempratures de la semaine Variables : Temp : tableau [7] dentiers k : entier Somme : entier Dbut somme 0 Pour k de 1 jusquau 7 faire somme somme + Temp[k] moyenne somme/7 Fin

Le principe d'un tableau est trs simple : on stocke les lments dans des cases, chaque case tant tiquete d'un numro(gnralement appel indice). Pour accder un lment particulier d'un tableau, on donne son indice. Le nombre maximal dlments du tableau, qui est prcis la dfinition, sappelle sa dimension. Le type de ses lments sappelle le type du tableau.

Pour accder aux lments dun tableau, un indice indique le rang de llment.

Dclaration dun tableau

1) T: Tableau [6] de rels 2) T: Tableau [1,6] de rels

// liste de notes ou de tempratures

3) T: Tableau [0,5] de rels

Rels : Type des lments du tableau [6] : Nombre dlments dans le tableau. Chaque lment est repr dans le tableau par un indice varie de 0 taille-1 ou de 1 taille. On accde la case 2 par T[2]. (cest la 3e case ou la 2e case)

Utilisation dun tableau


Tableau une dimension La manipulation des lments du tableau (notes) est dcrite dans lexemple suivant : une seule variable permet de stocker 4 notes entires. Algorithme utilisation dun tableau Variables : notes : tableau[4] dentiers; Dbut notes[0] notes[1] notes[2] notes[3] Fin 12; : on peut fixer la valeur de llment dindice 0 14; 10; 18;

10

Ltat de mmoire

12

14

10

18

11

Manipulation de tous les lments dun tableau


Exemple 1 : Lire les valeurs des lments dun tableau T de N

nombres entiers.

12

Tableau deux dimensions Linformatique nous offre la possibilit de dclarer des tableaux dans lesquels les valeurs ne sont pas repres par une seule, mais par deux coordonnes. Tableau cases [7,7] en Entier

13

Exemple :

Ecrire un algorithme remplissant un tableau de 6 sur 13, avec des zros.

14

Plan
Introduction Informatisation dun problme : Langage algorithmique Les variables Les constantes Fonctions dentre-sortie Les structures de contrles Les tableaux Procdures et fonctions

Les fichiers

15

Procdures
Nous voulons poser plusieurs questions aux quelles nous attendons une rponse sous la forme O ou N. Un compteur nous permettra de compter le nombre de rponse positive.

Peut-on passer au feu rouge clignotant?


Doit-on marquer un arrt au STOP?

Pour prendre en compte la rponse de lutilisateur qui doit rpondre seulement par OUI ou par NON

Ceci ncessite lutilisation de plusieurs instructions en particulier lutilisation de la boucle tant que,

16
Algorithme : rponseOuiNon Variables : rep : caractre Dbut : Compteur 0 Ecrire Peut-on passer au feu rouge clignotant Lire rep Tant que rep # O ET rep # N { Ecrire rpondez O pour oui et N pour non Lire rep } Si Rep N alors compteur compteur + 1 Ecrire Doit-on marquer un arrt au STOP Lire rep Tant que rep # O ET rep # N { Ecrire rpondez O pour oui et N pour non Lire rep } Si Rep O alors compteur compteur + 1 Ecrire points marqus : , compteur Fin

17

Pour ne pas avoir recopier plusieurs fois les mmes lignes dans lalgorithme, nous pouvons crer une procdure qui est une partie dalgorithme, crite part, dsign par un nom, et que lon fait excuter plusieurs fois, en citant son nom.

18

Dfinition dune procdure :

Procdure maProcdure ( )
// dclaration des variables

Variables var1 : entier Dbut instructions 1 instructions 2 Fin procdure

19

Variables Question : chane de caractres Rep : caractre; Compteur: nombre entier Procdure ReponseOuiNon ( ) Dbut Ecrire Question Lire Rep Tant que (rep # O) et (Rep # N) Faire Ecrire rpondez par O ou par N Lire Rep Fin

20

Dbut Compteur 0 Question peut-on passer au feu rouge clignotant? PeponseOuiNon Si Rep N alors compteur compteur + 1 Question doit-on marquer un arrt au STOP? PeponseOuiNon Si Rep O alors compteur compteur + 1 Ecrire points marqus : , compteur Fin

21

Les variables locales et globales

Les variables dclares dans lalgorithme appelant ne sont pas utilisables dans les procdures. Chaque algorithme et sous algorithme a son propre espace de variables, inaccessible par les autres.

Les variables sont dites LOCALES.


Il peut exister des variables GLOBALES, mais leur usage est dconseill.

22

Paramtres
Un paramtre est une variable particulire sert la communication entre algorithme appelant et sous-algorithme. Deux types de communication de valeurs par paramtres apparaissent : La valeur du paramtre effectif est affecte avant lexcution de la procdure au paramtre formel qui est une variable appartenant la procdure : on dit que le paramtre est en entre. Le paramtre formel est une autre dsignation du paramtre effectif, valable pendant la dure de la procdure, il ne lui correspond aucune variable propre la procdure : Le paramtre est en sortie.

23

Paramtres en entre : transmission par valeur

Dans lexemple 1, on peut dclarer une nouvelle variable quest, qui va service dun variable locale la procdure.

24

Procdure ReponseOuiNon (Quest : chane de caractres) Dbut Ecrire Quest Lire Rep Tant que (rep # O) et (Rep # N) Faire Ecrire rpondez par O ou par N Lire Rep Fin Dbut BonnesReponses 0 ReponseOuiNon(peut-on passer au feu rouge?) Si Rep = N Alors BonnesReponses BonnesReponses + 1 ReponseOuiNon(Doit-on marquer un arrt au STOP?) Si Rep = O Alors BonnesReponses BonnesReponses + 1 Fin

25

Le paramtre est crit entre parenthses, on le qualifie de paramtre formel dans la dclaration, de paramtre effectif lors de chaque appel.

Lors du premier appel la procdure, le texte Peut-on passer au


feu rouge clignotant? est automatiquement affect au paramtre Quest, Il sera remplac par doit-on marquer un arrt au STOP? lors du deuxime appel. On na plus soccuper de la variable Question qui peut disparaitre du programme, mais seulement fournir, lors de chaque appel, le paramtre effectif qui correspond au paramtre formel.

26

Paramtre en sortie : transmission par adresse


Exemple : Nous voulons stocker les rponses successives dans le tableau R de [1..20] caractres pour permettre un traitement ultrieur. Dbut lectureOuiNon(peut-on passer au feu rouge clignotant?) R[1] Rep LectureOuiNon(doit-ont marquer un arrt u STOP?) R[2] Rep Nous prfrons crer un second paramtre : la variable effective dans laquelle la procdure doit lire la rponse. Lalgorithme devient :

27

Procdure ReponseOuiNon (Quest : chane de caractres, Rep : caractre) Dbut Ecrire Quest Lire Rep Tant que (Rep # O) et (Rep # N) Faire Ecrire rpondez par OUI ou par NON Lire REP Fin Dbut ReponseOuiNon(peut-on passer au feu rouge?, R[1]) ReponseOuiNon(Doit-on marquer un arrt au STOP?, R[2]) Fin

28

La correspondance entre la variable R[1] et le paramtre Rep ne peut pas fonctionner comme pour le paramtre quest, On ne souhaite pas voir affecter la valeur de R[1] Rep, mais on veut au contraire que la valeur finale de Rep se trouve dans R[1], Le nom Rep, dfini comme paramtre formel de la procdure est un nom provisoire dsignant le paramtre effectif pour la dure de lexcution de la procdure.

R[1] dsigne pendant la premire excution et R[2] pendant la deuxime.

29

Pour distinguer dans lcriture, nous choisirons de faire procder, chaque nom de paramtre formel de lindication du type de transmission, suivant le modle : Procdure Deux Paramtres ( ParamtreEnEntre, ParamtreEnSorte)

Les paramtres en Entre/Sortie, ils sont galement transmis par adresse et nots par la double flche

30

Les fonctions
Certains traitements ne peuvent tre effectus par un algorithme, exemple le cas du calcul du sinus dun angle.

Tout langage de programmation propose un certain nombre de fonctions; certains sont indispensables, car elles permettent deffectuer des traitements qui seraient sans elles impossibles. Dautres servent faciliter la programmation.

31

Structure gnrale des fonctions


Reprenons lexemple du sinus. Les langages informatiques, proposent gnralement une fonction SIN. Si nous voulons stocker le sinus de 35 dans la variable A, nous crirons :

sin(35)

32

Une fonction est donc constitue de trois parties :


- Le nom de la fonction. Le nom dune fonction commence par une minuscule. Le nom dune fonction ne comporte pas despace. Si le nom de la fonction est compos de plusieurs mots, faire commencer chacun deux par une majuscule (par exemple : sommeDeDeuxEntiers,) et ne pas faire figurer de traits dunion.
- Deux parenthses, une ouvrante, une fermante.

- Une liste de valeurs, indispensables la bonne excution de la fonction. Ces valeurs sappellent des arguments, ou des paramtres. Certaines fonctions exigent un seul argument, dautres deux, etc. et dautres aucun.

33

Lutilit des fonctions :


Le programmeur doit penser concevoir et crire des fonctions pour amliorer son programme. Il y gagnera sur plusieurs points : Le code des algorithmes est plus simple, plus clair et plus court. Dans un algorithme, appeler une fonction se fait en une seule ligne et la fonction peut tre appele plusieurs reprises. Une seule modification dans la fonction sera automatiquement rpercute sur tous les algorithmes qui utilisant cette fonction. Lutilisation de fonctions gnriques dans des algorithmes diffrents permet de rutiliser son travail et de gagner du temps.

34

Les fonctions sont comparables aux procdures : Leur appel ne constitue pas lui seul une instruction, mais figure dans une expression. Leur excution produit un rsultat qui prend la place de la fonction lors de lvaluation de lexpression.

Linstruction retourne,

35

Trois tapes sont toujours ncessaires lexcution dune fonction :

1.

Le programme appelant interrompt son excution.

2.

La fonction appele effectue son bloc dinstructions. Ds quune instruction retourne est excute, la fonction sarrte.
Le programme appelant reprend alors son excution.

3.

36

Larrt de la fonction
Une fonction sarrte lorsque son excution atteint la fin du bloc dinstructions, ou lorsque linstruction retourne est excute (avec ou sans valeur).

37

Fonction sans valeur retourne


Ecrire et utiliser une fonction simple qui doit afficher bonjour . Cette fonction ne retourne pas de valeur : ceci est signal en prcisant quelle retourne vide. Fonction afficheBonjour () : vide Dbut crire (bonjour) retourne Fin Une fonction se termine toujours par linstruction retourne. Cette fonction effectuera les instructions entre Debut et Fin.

38

Ecrire un algorithme qui appelle la fonction afficheBonjour (). Algorithme utilise-fonction Dbut afficheBonjour () Fin

39

La suite des instructions excutes au cours du temps :

40

Exemple :
Ecrire un algorithme qui appelle 10 fois la fonction afficheBonjour ().

41

Fonction avec une valeur retourne


Dfinition La valeur de retour

Une fonction peut retourner une valeur au programme appelant. Cette valeur est unique. Le retour de la valeur signifie larrt de la fonction.
Exemple : Ecrire une fonction qui permet de lire une note entre 0 et 20.

42

Fonction lireNote() : entier


Variables : note: entier Debut ecrire(Entrez une note : ) lire(note); // lutilisateur entre la note tant_que ((note<0) OU (note>20)) faire { ecrire (vous avez fait une erreur, essayez encore : ) message derreur affich lire(note); // on recommence la saisie } retourne(note) Fin

//

43

Fonctions rcursives Construire la solution dun problme en utilisant la solution du mme problme dans un contexte diffrent (plus simple). La suite des contextes doit tendre vers une solution directe (cas terminal). Les fonctions rcursives sont adaptes une certaine classe de problmes. Exemple : la factorielle

Vous aimerez peut-être aussi