Vous êtes sur la page 1sur 21

TDI

CHAPITRE I Introduction

INTRODUCTION I.Introduction
1.
a.

Dfinitions

Linformation Linformation est le support formel dun lment de connaissance humaine susceptible dtre reprsente laide de conventions (codages) afin dtre conserve, traite ou communique. b. La donne Une donne est la reprsentation dune information conventionnelle (code) destine faciliter son traitement. sous une forme

c. Traitement de linformation Le traitement de linformation consiste appliquer un ou plusieurs oprations sur une information en entre pour gnrer des rsultats en sortie

schma simplifi du traitement de linformation

d. Lordinateur Un ordinateur est une machine lectronique programmable destine au traitement de linformation. e. Linformatique Linformatique est la science du traitement de linformation dans les domaines scientifiques, techniques, conomiques et sociaux.
Exemples de traitements de linformation par informatique :

-dmontrer un thorme (mathmatique) -faire jouer aux checs (intelligence artificielle) -dpouiller un sondage (conomie) -grer un robot industriel (atelier) -facturation de produits (entreprise) -traduire un texte (linguistique) -imagerie mdicale (mdecine) -formation distance (ducation) -Internet (grand public)...etc 1/21

TDI

CHAPITRE I Introduction

f. Le systme informatique Ensemble de matriels (ordinateurs, rseaux) et de logiciels permettant d'acqurir, de stocker, de traiter, de communiquer des donnes pour rpondre aux besoins en information de ses utilisateurs. g. Le systme dinformation En tlcommunications et en informatique, le terme systme d'information (ou SI) possde les significations suivantes :* Un systme, automatis ou manuel, qui comprend des hommes, des machines et des mthodes organiss pour assembler, transmettre et rpandre des donnes qui reprsentent de l'information pour les utilisateurs. ... h. Les rseaux informatique Un rseau informatique est un ensemble d'quipements interconnects qui servent acheminer un flux d'informations. Sa naissance est le fruit du mariage entre Informatique et Tlcommunications.

2/21

TDI

CHAPITRE II Algorithmique (Notions de base)

ALGORITHMIQUE (NOTIONS DE BASE) I Introduction


1.
Un programme, informatique, se dfinit comme une srie dinstructions dans un langage que lordinateur comprend. Un bon programme doit : - fonctionner - fonctionner selon les spcifications - pouvoir tre modifi facilement - tre prt temps - tre trs bien document - utiliser la mmoire efficacement

Notion de programme informatique

2.

- Un algorithme dcrit un traitement sur un certain nombre, fini, de donnes (ventuellement aucune). - Un algorithme est la composition d'un ensemble fini d'tapes, chaque tape tant forme d'un nombre fini d'oprations dont chacune est : - dfinie de faon rigoureuse et non ambigu; - effective, c'est--dire pouvant tre effectivement ralise par une machine: cela correspond une action qui peut tre ralise avec un papier et un crayon en un temps fini; par exemple la division entire est une opration effective, mais pas la division avec un nombre infini de dcimales. - Quelle que soit la donne sur laquelle il travaille, un algorithme doit toujours se terminer aprs un nombre fini d'oprations, et fournir un rsultat. Un algorithme doit rpondre aux 5 caractristiques suivantes : La finitude La prcision Le domaine des entres Le domaine des sorties Lexcutabilit

Notion dalgorithme

3.

Organigramme et pseudo-code

Historiquement, plusieurs types de notations ont reprsent des algorithmes. Il y a eu notamment une reprsentation graphique, avec des carrs, des losanges, etc. quon appelait des organigrammes. Aujourdhui, cette reprsentation est quasiment abandonne, pour deux raisons. Dabord, parce que ds que lalgorithme commence grossir un peu, ce nest plus pratique du tout. Ensuite 3/21

TDI

CHAPITRE II Algorithmique (Notions de base)

parce que cette reprsentation favorise le glissement vers un certain type de programmation, dite non structure (voir les chapitres suivants), que lon tente au contraire dviter. Cest pourquoi on utilise gnralement une srie de conventions appele pseudo-code , qui ressemble un langage de programmation authentique dont on aurait vacu la plupart des problmes de syntaxe. Ce pseudo-code est susceptible de varier lgrement dun livre (ou dun enseignant) un autre. Cest bien normal : le pseudo-code, encore une fois, est purement conventionnel; aucune machine nest cense le reconnatre.

4.

Les ordinateurs, quels quils soient, ne sont fondamentalement capables de comprendre que quatre catgories d'ordres (en programmation, on n'emploiera pas le terme d'ordre, mais plutt celui d'instructions). Ces quatre familles d'instructions sont :

Algorithmique et programmation

laffectation de variables la lecture / criture les tests les boucles

Un algorithme informatique se ramne donc toujours au bout du compte la combinaison de ces quatre petites briques de base. Il peut y en avoir quelques unes, quelques dizaines, et jusqu plusieurs centaines de milliers dans certains programmes de gestion (cependant, la taille dun algorithme ne conditionne pas en soi sa complexit: de longs algorithmes peuvent tre finalement assez simples, et de petits trs compliqus). Pourquoi apprendre lalgorithmique pour apprendre programmer ? En quoi a-t-on besoin dun langage spcial, distinct des langages de programmation comprhensibles par les ordinateurs ? Parce que lalgorithmique exprime les instructions rsolvant un problme donn indpendamment des particularits de tel ou tel langage. Il vaut mieux faire dabord le plan et rdiger ensuite que linverse Apprendre lalgorithmique, cest apprendre manier la structure logique dun programme informatique. Cette dimension est prsente quelle que soit le langage de programmation ; mais lorsquon programme dans un langage (en C, en Visual Basic, etc.) on doit en plus se colleter les problmes de syntaxe, ou de types dinstructions, propres ce langage. Apprendre lalgorithmique de manire spare, cest donc srier les difficults pour mieux les vaincre.

II.Elements de base des algorithmes


1. Notion de variable
4/21

TDI

CHAPITRE II Algorithmique (Notions de base)

a. Les types de donnes Dans un programme informatique, on va avoir en permanence besoin de stocker provisoirement des valeurs. Il peut sagir de donnes issues du disque dur, fournies par lutilisateur (frappes au clavier), ou autres. Il peut aussi sagir de rsultats obtenus par le programme, intermdiaires ou dfinitifs. Ces donnes peuvent tre de plusieurs types : elles peuvent tre des nombres, du texte, etc. On peut dire quun type de donnes est lensemble de valeurs de mme nature quune variable peut avoir b. Les variables Pour employer une image, une variable est une bote, que le programme (lordinateur) va reprer par une tiquette (Nom de variable). Pour avoir accs au contenu de la bote, il suffit de la dsigner par son tiquette. Dans lordinateur, physiquement, il y a un emplacement de mmoire, repr par une adresse binaire. Si on programmait dans un langage directement comprhensible par la machine, on devrait dsigner nos donnes par des chiffres binaires (0 et 1). Les langages informatiques plus volus (ce sont ceux que presque tout le monde emploie) se chargent prcisment, entre autres rles, dpargner au programmeur la gestion fastidieuse des emplacements mmoire et de leurs adresses. Il est beaucoup plus facile demployer des noms de variables de son choix, que de devoir manier des adresses binaires. La premire chose faire avant de pouvoir utiliser une variable est de crer la bote et de lui coller une tiquette. Ceci se fait tout au dbut de lalgorithme, avant mme les instructions proprement dites. Cest ce quon appelle la dclaration des variables Le nom de la variable (ltiquette de la bote) obit des impratifs changeant selon les langages. Toutefois, une rgle absolue est quun nom de variable peut comporter des lettres et des chiffres, mais quil exclut la plupart des signes de ponctuation, en particulier les espaces. Un nom de variable correct commence galement imprativement par une lettre. Quant au nombre maximal de signes pour un nom de variable, il dpend du langage utilis. En pseudo-code algorithmique, on est bien sr libre du nombre de signes pour un nom de variable. Lorsquon dclare une variable, il ne suffit pas de crer une bote (rserver un emplacement mmoire) ; encore doit-on prciser ce que lon voudra mettre dedans, car de cela dpendent la taille de la bote (de lemplacement mmoire) et le type de codage utilis.

2.

Expression et oprateur

Une expression est un ensemble de valeurs, relies par des oprateurs, et quivalent une seule valeur Par exemple, voyons quelques expressions de type numrique. Ainsi :

5/21

TDI

CHAPITRE II Algorithmique (Notions de base)

7 5+4 123-45+844 T-12+5-R sont toutes des expressions valides, condition que T et R soient bien des nombres. Car dans le cas contraire, la quatrime expression na pas de sens. En loccurrence, les oprateurs employs sont laddition (+) et la soustraction (-). Un oprateur est un signe qui relie deux valeurs, pour produire un rsultat. Les oprateurs possibles dpendent du type des valeurs qui sont en jeu. On peut avoir : a. Oprateurs numriques : Ce sont les quatre oprations arithmtiques : + : addition - : soustraction * : multiplication / : division Mentionnons galement le ^ qui signifie puissance . 45 au carr scrira donc 45 ^ 2. Enfin, on a le droit dutiliser les parenthses, avec les mmes rgles quen mathmatiques. La multiplication et la division ont naturellement priorit sur laddition et la soustraction. Les parenthses ne sont ainsi utiles que pour modifier cette priorit naturelle. Cela signifie quen informatique, 12 * 3 + 5 et (12 * 3) + 5 valent strictement la mme chose, savoir 41. Pourquoi ds lors se fatiguer mettre des parenthses inutiles ? En revanche, 12 * (3 + 5) vaut 12 * 8 soit 96. Rien de difficile l-dedans, que du normal. b. Oprateur alphanumrique : & ou + Cet oprateur permet de concatner, autrement dit dagglomrer, deux chanes de caractres. Par exemple : Variables A, B, C en Caractre Dbut A "Salut " B "tout le monde" CA&B Fin La valeur de C la fin de lalgorithme est "Salut tout le monde" c. Oprateurs logiques (ou boolens) : Il sagit du ET, du OU, du NON et du mystrieux (mais rarissime XOR : le ou exclusif). 6/21

TDI

CHAPITRE II Algorithmique (Notions de base)

3.

Laffectation

Consiste mettre la valeur dune variable dans une autre variable Pseudo-code : Variable1 Variable2 Exemple x10 ; yx

4.

Lecture et criture

La lecture permet dattribuer une valeur un objet en allant lire sur un priphrique dentre (exemple clavier) et elle range cette valeur dans lobjet. Pseudo-code lire(Nom de variable) Exemple : Lire(x) Organigramme lire(Nom de variable)

La lecture permet dcrire sur un priphrique de sortie linformation spcifie (exemple affichage lcran) Pseudo-code Organigramme

crire(Nom de variable) crire(Nom de variable) Exemple : crire( salut ) En organigramme les instructions de lecture criture sont mises dans un losange

5.

Chaque programme possde un dbut et une fin Pseudo-code Organigramme Dbut . . Fin dbut

Le bloc dbut et fin

fin

6.

Exemples (voir exercices)

III.Structures de base des algorithmes


1. Structures alternatives

a. Linstruction SI Linstruction si permet de faire un traitement si la condition est vrai un autre traitement sinon

7/21

TDI

CHAPITRE II Algorithmique (Notions de base)

Pseudo-code Si condition alors Bloc dinstructions Sinon Bloc dinstructions Fin si Exemple : si x>=0 alors Ecrire (x, est positif ) Sinon Ecrire(x, est ngatif ) Fin si

Organigramme
Fausse Vrai

condition

Traitement si condition fausse

Traitement si condition vrai

b. Linstruction SELON Linstruction selon permet dvaluer plusieurs cas pour des valeurs dune variable de type simple tel que caractre ou entier. Cest une structure que lon trouve dans tous les langages de programmation et qui permet dviter des si imbriqus

2.

Structures itratives (les boucles)

Les structures itratives permettent de rpter un traitement zro ou plusieurs fois. a. La boucle tant que La boucle Tant que permet de rpter un traitement Tant que la condition est vrai Pseudo-code Organigramme Tant que condition faire Bloc dinstructions Fin Tq Exemple : X10 Tant que x>=0 Faire Xx-1 Fin Tq
Fausse Vrai

condition

Traitement de la boucle

b. La boucle rpter. jusqu' La boucle Rpter jusqu' permet de rpter un traitement au moins une fois jusqu' ce que la condition est vrai la condition est vrifie la fin de la boucle Pseudo-code Organigramme

8/21

TDI

CHAPITRE II Algorithmique (Notions de base)

Rpter Bloc dinstructions Jusqu' condition Exemple : X10 Rpter Xx-1 Jusqu' x=0

Traitement

Vrai

condition

Fausse

c. La boucle pour La boucle pour est une structure qui existe dans la majorit des langages de programmation et qui permet de rpter un traitement un certain nombre de fois, le nombre de rptition est connu lavance. La boucle pour utilise une variable compteur qui sera incrmente ou dcrmente automatiquement selon la valeur du pas Pseudo-code Pour variable=valeur initiale valeur finale pas valeurs Traitement de la boucle Fin pour Exemple Dbut Pour i=5 100 pas 5 Ecrire (i, est un multiple de 5 ) Fin pour d. La boucle rpter tant que La boucle rpter tant que est semblable celle de rpter jusqu' sauf que le traitement est rpt tant que la condition est vraie Pseudo-code Organigramme Rpter Bloc dinstructions Tant que condition Exemple : X10 Rpter Xx-1 Tant que x>0

Traitement

Fausse

condition

Vrai

9/21

TDI

CHAPITRE III Algorithmique (Les tableaux)

CHAPITRE II

Algorithmes lis lutilisation de tableaux. I.Introduction


1. Dfinition :
Une liste est une suite dlments de mme type. Dans un programme, pour ranger les lments dune liste on peut utiliser plusieurs variables simples mais lorsque le nombre dlments Atteint une certaine limite il devient impossible dadopter cette solution. La structure de tables ou (tableaux) vient rsoudre le problme : la liste est dfinie en mmoire sous forme dun tableau ayant un seul nom et un seul type : type des lments de la liste . Pour dsigner un lment de liste on utilise le nom du tableau suivi par le numro dordre de llment du tableau que lon veut utiliser. Exemple : Considrons le tableau T suivant : T: 45 20 13 5 95 10 7

T(5) : reprsente le cinquime lment du tableau T c'est--dire 95

2. Algorithme de chargement dun tableau :


Lopration de chargement consiste affecter aux lments du tableau des valeurs particulires (produites par un traitement) ou des valeurs introduites par clavier (lecture). a. Chargement par lecture : Soit T un tableau de N lments crire lalgorithme qui lit les N lments du tableau Dbut I0 Tant que i<N I I + 1 Lire(T(i)) Fin Tq Fin

10/21

TDI

CHAPITRE III Algorithmique (Les tableaux)

b. Chargement par traitement Soit T un tableau de N lments crire lalgorithme qui rempli le tableau T par les N multiples de 10 Dbut I0 Rpter I I+1 T(I) I*10 Jusqu' I=10 Fin

II. Recherche dans un tableau :


Cest lopration qui consiste trouver un ou plusieurs lments qui peuvent exister lintrieure du tableau. Il y a plusieurs types de recherche, les plus frquentes consiste retrouver un lment qui rpond une condition donne. Par exemple : chercher llment qui est gale 20 et afficher son rang dans le tableau. La recherche peut aboutir lorsque llment existe on dit que la recherche est fructueuse, elle peut chouer si llment nexiste pas, plusieurs algorithmes sont possibles. On va essayer de voir les algorithmes les plus utiliss.

1. La recherche squentielle :
La recherche squentielle consiste balayer le tableau squentiellement en partant du 1er lment ou du dernier jusqu' trouver llment recherch ou arriver la fin du tableau. Exemple : soit chercher dans une liste de 20 lments rangs dans un tableau T un lment X donn. Afficher la position de llment sil existe et le message non trou sil nexiste pas. Algorithme : recherche de llment x dans un tableau N lments

Dbut Lire (X) I1 Tant que I< N et T(I)X II+1 Fin Tq Si T(I)=X alors crire lment trouv la position ; I) sinon crire non trouv . Fin si

11/21

TDI

CHAPITRE III Algorithmique (Les tableaux)

Fin

2. Recherche dichotomique : recherche dans un tableau tri

La recherche dichotomique est applique sur les listes tries. Elle consiste limiter les champs de recherche successivement jusqu retrouver llment recherch ou avoir un champs de recherche qui ne contient aucun lment. Chaque fois on dfini un intervalle de recherche par une borne infrieure et suprieure et on se positionne au milieu pour faire le test. Ce traitement se rpte jusqu' trouver llment ou arriver un intervalle vide. Algorithme de la recherche dichotomique.

Dbut Lire(x) M1 Binf1 BsupN Tant que Binf<=Bsup et x T(m) ME((Binf+Bsup)/2) // E : reprsente la partie entire Si x>T(m) alors Binfm+1 Fin si Si x<T(m) alors Bsupm-1 Fin si Fin Tq Si x=T(m) alors Ecrire( Elment trouv ) Sinon Ecrire( Elment non trouv ) Fin si Fin Remarque : La recherche dun lment dans un tableau de 1000 lments ncessitera pour la recherche squentielle dans le cas le plus dfavorable la rptition de la recherche pendant 1000 fois pour la recherche dichotomique le traitement sera rpt dans le cas le plus dfavorable moins de 10 fais.

III. Les tris


1. Dfinition
Un tri consiste arranger des donnes selon un ou des critres bien dtermins.

12/21

TDI

CHAPITRE III Algorithmique (Les tableaux)

Par exemple trier des donnes selon un ordre alphabtique croissant ou dcroissant. Le tri est une des oprations des plus importantes des traitements sur ordinateur. Diffrentes mthodes peuvent tre envisages suivant la nature du problme traiter. En informatique, on distingue deux grandes catgories de tri: le tri interne, le tri externe. Par tri interne, on comprend les mthodes de tri qui gardent l'ensemble des lments trier en mmoire centrale au moment de l'excution de l'algorithme de tri. Si cela ne pouvait se faire, soit parce que le nombre d'lments trier est trop grand, soit parce que les lments sont d'une taille trop importante, il faudrait faire appel des mthodes de tri externe. Les mthodes de tri externe ne gardent en mmoire centrale qu'une partie des lments trier, les autres tant par consquent temporairement mmoriss sur des fichiers externes. Comme certaines mthodes de tri externe utilisent aussi en partie des mthodes de tri interne, nous tudierons dans ce chapitre quelques algorithmes classiques de tri interne.

2. Les mthodes de tris


a. Tri par slection -Mthode : On cherche llment de plus petite valeur pour lchanger avec llment en premire position; puis on cherche llment ayant la deuxime plus petite valeur pour lchanger avec llment en deuxime position ; et ainsi de suite. 20 6 1 3 1 7 1 6 20 3 1 7 1 1 20 3 6 7 1 1 3 20 6 7 1 1 3 6 20 7 1 1 3 6 7 20 Il faut : 1 boucle pour parcourir le tableau et slectionner tous les lments ; 1 boucle pour rechercher le minimum parmi les lments non tris. -Algorithme : Soit trier un tableau T de N lments dans lordre croissant Dbut Pour i=1 N-1 Mini Pour j=i+1 N

13/21

TDI

CHAPITRE III Algorithmique (Les tableaux)

Si T(j)<T(min) alors Minj Fin si Fin pour XT(i) T(i)T(min) T(min)x Fin pour Fin

b. Tri par insertion -Mthode : on considre les lments les uns aprs les autres en insrant chacun sa place parmi les lments dj tris. 20 6 1 3 1 7 6 20 1 3 1 7 1 6 20 3 1 7 1 3 6 20 1 7 1 1 3 6 20 7 1 1 3 6 7 20 Il faut : 1 boucle pour parcourir le tableau et slectionner llment insrer ; 1 boucle pour dcaler les lments plus grands que llment insrer ; insrer llment. -Algorithme Dbut Pour i=2 N PT(i) Ji Tant que j>1 et T(j-1)>p T(j)T(j-1) Jj-1 Fin Tq T(j)p Fin pour Fin c. Tri bulle -Mthode : En commenant du 1er lment on compare chaque lment son suivant si cest suprieur on permute et on passe llment suivant aprs avoir compt le

14/21

TDI

CHAPITRE III Algorithmique (Les tableaux)

nombre de permutation on continu jusqu' la fin du tableau, on rpte ce traitement jusqu' ce que le nombre de permutation est nul. -Algorithme Dbut Rpter Permuter=faux I1 Rpter Si T(i)>T(i+1) alors Permutervrai X<-T(i) T(i)T(i+1) T(i+1)x Fin si Ii+1 Jusqu' i=N Jusqu' permuter=faux Fin d. Tri par permutation -Mthode : En commence au 1er lment du tableau on compare chaque lment avec son successeur si ce dernier est infrieur on permute et on revient au dbut de la liste sinon on continu jusqu' ce quon arrive lavant dernier lment. -Algorithme Dbut I1 Tant que i<N Si T(i)>T(i+1) alors XT(i) T(i)T(i+1) T(i+1)x I1 Sinon Ii+1 Fin si Fin Tq Fin

15/21

TDI

CHAPITRE IV Algorithmique (Les procdures et les fonctions)

CHAPITRE III

Les procdures et les fonctions. I. INTRODUCTION


Lorsqu'un programme est long, il est irraliste d'crire son code d'un seul tenant. En fait, on dcompose le programme en plusieurs parties plus petites, on donne un nom chacune de ces parties, et on les assemble pour former le programme final. C'est le principe de la programmation structure ou modulaire, qui repose sur l'criture de sous-programmes. Un sous-programme est, comme son nom l'indique, un programme ralisant un traitement particulier qui s'excute l'intrieur d'un autre programme. Les sous-programmes sont utiliss pour deux raisons essentielles : - quand un mme traitement doit tre ralis plusieurs fois dans un programme (ou qu'il est utilis dans plusieurs programmes): on crit un sousprogramme pour ce traitement et on l'appelle chaque endroit o l'on en a besoin. On vite ainsi de rcrire plusieurs fois le code du traitement. - pour organiser le code , amliorer la conception et la lisibilit des gros programmes. En effet, le dcoupage en sous-programmes permet de traiter sparment les difficults. Certains sous-programmes ont dj t crits et peuvent tre utiliss directement dans n'importe quel programme. Ce sont des sous-programmes standards ou prdfinis. C'est le cas par exemple des sous programmes permettant de faire des calculs mathmatiques (racine carre, exposant, sinus, log ). La nature et le nombre de programmes standards dpendent des langages. Mais les sous-programmes prdfinis ne suffisent pas pour dcouper un gros programme : le programmeur est amen crire le code de ses propres sousprogrammes. Il existe deux sortes de sous-programmes : les procdures et les fonctions Nous allons tudier d'abord les procdures simples, puis les fonctions.

II. LES PROCEDURES


Une procdure est un ensemble d'instructions regroupes sous un nom, qui ralise un traitement particulier dans un programme lorsqu'on l'appelle. Comme un programme, une procdure possde un nom, des variables, des instructions, un dbut et une fin. Mais contrairement un programme, un sous-programme ne peut pas s'excuter indpendamment d'un autre programme. Exemple de DEFINITION d'une procdure:

16/21

TDI

CHAPITRE IV Algorithmique (Les procdures et les fonctions)

Procdure ligneEtoile( ) Var i : entier Dbut Pour i = 1 jusqu' 10 Faire Ecrire ('*') FinPour Ecrire('\n') //retour la ligne FinProc Cette procdure permet d'afficher une ligne de 10 toiles puis passe la ligne. APPEL d'une procdure Pour dclencher l'excution d'une procdure dans un programme, il suffit de l'appeler, c'est--dire d'indiquer son nom suivi de parenthses. Programme RectangleEtoile Var nlignes: entier cpt : entier Dbut Ecrire("Ce programme dessine un rectangle d'toiles. Combien voulez-vous de lignes?") Lire(nlignes) Pour cpt=1 jusqu' nlignes Faire ligneEtoile ( ) Appel de la procdure ligneEtoile

FinPour Fin Lorsque le processeur rencontre l'appel d'une procdure, il arrte momentanment l'excution du programme appelant pour aller excuter les instructions de la procdure. Quand il a termin l'excution de la procdure, le processeur reprend l'excution du programme appelant l o il s'tait arrt. Une procdure peut tre appele soit par un programme, soit par un autre sousprogramme (qui lui mme a t appel). Les appels de sous-programmes peuvent s'imbriquer autant qu'on le dsire.

1. Notions de variables locales et de paramtres


Les variables dclares dans une procdure ne sont pas utilisables dans le programme appelant. Chaque sous-programme a son propre espace de variables, inaccessible par les autres. On dit que les variables sont LOCALES. 17/21

TDI

CHAPITRE IV Algorithmique (Les procdures et les fonctions)

Procdure ligneEtoile( ) Var i : entier Dbut Pour i=1 jusqu' 10 Faire Ecrire('*') FinPour Ecrire('\n') FinProc Dans notre exemple, on ne pourrait pas saisir ou afficher la variable i dans le programme principal, car i est une variable de la procdure, utilisable seulement dans celle -ci. Le programme principal n'a pas le droit de l'utiliser. Une question qui se pose alors est de savoir comment procdures et programmes vont pouvoir communiquer des donnes. Par exemple, on pourrait vouloir que le programme principal communique la procdure combien d'toiles afficher par ligne. Cela est possible grce aux paramtres. Un paramtre est une variable particulire qui sert la communication entre programme appelant et sous -programme. Exemple : Dans notre exemple, nous allons mettre le nombre d'toiles par lignes en paramtre. Pour cela, nous indiquons entre parenthses la dclaration du paramtre (qui est une variable de la rocdure !). La valeur de ce paramtre est communique l'appel, par le programme appelant. Procdure ligneEtoile(nombre : entier ) //sous-programme Var paramtre formel cpt : entier Dbut Pour cpt=1 jusqu' nombre Faire Ecrire('*') FinPour Ecrire('\n') FinProc

Programme RectangleEtoile //programme appelant Var nlignes, netoiles: entier //nombre de lignes et nombre d'toiles par ligne

18/21

TDI

CHAPITRE IV Algorithmique (Les procdures et les fonctions)

i : entier Dbut Ecrire("Ce programme dessine un rectangle d'toiles.") Ecrire("Combien voulez-vous d'toiles par ligne?") Lire(netoiles) Ecrire("Combien voulez-vous de lignes?") Lire(nlignes) Pour i=1 jusqu' nlignes Faire ligneEtoile (netoiles) FinPour paramtre effectif Fin

2. Passage des paramtres de type donne (par valeur)


Lors de l'appel de la procdure, la valeur de la variable netoiles passe en argument est copie dans le paramtre formel nombre (qui est une variable). La procdure effectue alors le traitement avec la variable nombre qui a bien la valeur voulue: celle de netoiles. La procdure n'utilise par directement la variable netoile : elle utilise sa valeur, qu'elle a recopie dans sa propre variable -paramtre. Remarque importante sur l'ordre et le nombre des paramtres Lorsqu'il y a plusieurs paramtres dans la dfinition d'une procdure, il faut absolument qu'il y en ait le mme nombre l'appel et que l'ordre soit respect (car la copie se fait dans l'ordre).

3. Les paramtres rels et formels


Il est primordial de bien distinguer les paramtres qui se trouvent dans l'en-tte d'une procdure, lors de sa dfinition et les paramtres (ou arguments) qui se trouvent placs entre parenthses lors de l'appel. 1 Les paramtres placs dans la dfinition d'une procdure sont les paramtres formels . Ils servent dcrire le traitement raliser par la procdure indpendamment des valeurs traites. Les paramtres formels sont des variables locales la procdure, et ce titre ils sont dclars dans l'entte de la procdure. 2 Les paramtres placs dans l'appel d'une procdure sont les paramtres rels ou effectifs.Lorsqu'ils sont de type donne, ils contiennent effectivement les valeurs sur lesquelles sera effectu le traitement de la procdure. Lors de l'appel, leur valeur est recopie dans les paramtres formels correspondants. Un paramtre effectif en donne peut tre soit une variable du programme appelant, soit une valeur littrale, soit le rsultat d'une expression.

19/21

TDI

CHAPITRE IV Algorithmique (Les procdures et les fonctions)

III. LES FONCTIONS


Les fonctions sont des sous-programmes qui retournent un et un seul rsultat au programme appelant. De ce fait, les fonctions sont appeles pour rcuprer une valeur, alors que les procdures ne renvoient aucune valeur au programme appelant. L'appel des fonctions est diffrent de l'appel des procdures : L'appel d'une fonction doit obligatoirement se trouver l'intrieur d'une instruction (affichage, affectation, test) qui utilise sa valeur. Le rsultat d'une fonction doit obligatoirement tre retourn au programme appelant par l'instruction Retourne. Syntaxe gnrale Fonction nom_Fonction(dclaration des paramtres) : type de la valeur retourne Var correspond la valeur d'une variable, d'une //variables locales expression ou d'une valeur littrale. Dbut //traitement Retourne valeur retourner FinFonction instruction obligatoire

Exemple :

dclaration du paramtre formel type de la valeur retourne

Fonction factorielle(n: entier) : entier /*Cette fonction retourne la factorielle du nombre n pass en paramtre*/ Var i : entier fact : entier Dbut fact 1 Si n ? 0 Alors Pour i=1 jusqu' n faire fact fact * n instruction de retour FinPour FinSi Retourne fact FinFonction Fonction saisie_nb_positif( ) : entier

20/21

TDI

CHAPITRE IV Algorithmique (Les procdures et les fonctions)

/*Cette fonction permet de faire saisir l'utilisateur un nombre positif qui est alors retourn*/ Var nb_saisi :entier Dbut Ecrire( "Veuillez entrer un nombre positif") Lire( nb_saisi) Tantque nb_saisi < 0 Faire Ecrire( "Erreur. Saisissez un nombre suprieur 0 s'il vous plait !") Lire( nb_saisi) FinTantque Retourne nb_saisi FinFonction Exemple de programme appelant utilisant ces deux fonctions: Programme affiche_factorielle Var appel de la fonction saisie_nb_positif et affectation de sa valeur retourne la nombre: entier variable nombre rep : chane Dbut paramtre effectif Rpter nombre saisie_nb_positif( ) Ecrire( "La factorielle de ", nombre, " est ", factorielle(nombre)) Ecrire( "Voulez-vous recommencez? (oui/non)") Lire( rep) appel de la fonction factorielle et affichage de sa Jusqu' rep = "non" valeur retourne Ecrire( "A bientt") Fin Remarque : Les paramtres d'une fonction sont toujours de type donne. La valeur des paramtres effectifs l'appel est recopie dans les paramtres formels qui servent raliser le traitement de la fonction. Remarque sur le passage des paramtres: Le passage de paramtre par valeur ne permet pas la modification de la variable passe en paramtre. un autre type de passage de paramtre, est le passage de paramtre par adresse ou (rfrence), dans ce type de passage de paramtre la procdure peut modifie la valeur de la variable passe en paramtre. Chaque langage de programmation propose sa propre technique pour raliser ce type de passage de paramtre.

21/21