Vous êtes sur la page 1sur 30

Initiation l'algorithmique

06/11/2012

Licence1

M.DIENGAbdoulaye
adieng@gmail.com

Novembre 2012

Objectifgnral
Acqurirlesbasesmthodologiquesdelarsolution d'unproblmedevantconduirelaralisationd'un programmeinformatique.

M. DIENG Abdoulaye

Initiation l'algorithmique

06/11/2012

Objectifsoprationnels
Connatrelestapesdersolutiondunproblme. Stockerettraiterdesdonneslaidedesvariableset

desoprateurs. Communiqueraveclalgorithme. Contrlerlefluxdexcutiondesinstructions. Seservirdestableaux,desenregistrementsetdes pointeurs. Dfiniretutiliserdesprocduresetdesfonctions.

Sommaire
Algorithme 2. tapesdersolutiondun problme 3. Notiondidentificateur 4. Notiondevariable 5. Lestypessimples 6. Notiondeconstante 7. Lesoprateurs
1. 8. 9. 10. 11. 12. 13. 14.

Laffectation Lesentres/sorties Lesstructuresdecontrle Lestableaux Lessousprogrammes Lesenregistrements Lespointeurs

M. DIENG Abdoulaye

Initiation l'algorithmique

06/11/2012

Algorithme
prsentation
Lalgorithmiqueestla sciencequitudielapplicationdes

algorithmeslinformatique

Lalgorithmeestunesuitefiniedinstructionsquelon

appliqueunnombrefinidedonnespourrsoudreun problme. Eninformatique,lalgorithmeestcritdansunlangage prochedulangagehumainappelpseudolangage. Lalgorithmen'estdoncexcutabledirectementparaucune machine,maisilal'avantaged'tretraduitfacilementdans tousleslangagesdeprogrammation.


rflexion traduction

programme algorithme problme

Algorithme
exemple: "prparationduthlasngalaise"

Les ingrdients : th, sucre, eau. Le rsultat : verres de th. Le matriel : thire, verres th, plateau, rchaud, allume-gaz. Les actions raliser 1. Mettre de leau dans la thire 2. Mettre du th dans la thire 3. Allumer le rchaud laide de lallume-gaz 4. Poser la thire sur le rchaud 5. Attendre jusqu lbullition 6. Eteindre le rchaud 7. Poser la thire sur le plateau 8. Mettre du sucre dans la thire 9. Faire de la mousse de th avec les verres Raffinement de la 9me instruction 10. Si le th est trs refroidi alors 9.1. Poser les verres sur le plateau 10.1. Rallumer le rchaud 9.2. Remplir un verre de th au 3/4 10.2. Rchauffer le th 9.3. Transvaser ce th dun verre un autre 10.3. teindre le rchaud jusqu lobtention de la mousse dans 11. Remplir les verres de th tous les verres 12. Servir le th

M. DIENG Abdoulaye

Initiation l'algorithmique

06/11/2012

Algorithme
caractristiques Unalgorithmedoittre: lisible:comprhensible(mmeparunnoninformaticien); dehautniveau:pouvoirtretraduitennimportequel langagedeprogrammation; prcis:aucunlmentdelalgorithmenedoitporter confusion; concis:unalgorithmenedoitpasdpasserunepage;sicest lecas,ilfautdcomposerleproblmeenplusieurssous problmes; structur:unalgorithmedoittrecomposdediffrentes partiesfacilementidentifiables.

Algorithme

structure(1/2) Unalgorithmeestcomposduneentteetduncorps L'enttespcifie: lenomdel'algorithmeannoncparlemot Programme ladfinitiondetypes annonceparlemot Type ; ladclarationdeconstantes,annonceparlemot Constante ; ladclarationdevariables,annonceparlemot Variable ; lesdfinitionsdesousprogrammes. lecorpsestcompos: dumotcl Dbut ; d'unesuited'instructions indentes; dumotcl Fin . Lescommentairessontentre(*et*).

M. DIENG Abdoulaye

Initiation l'algorithmique

06/11/2012

Algorithme
structure(2/2) Programme nomduprogramme Type (*Dfinitiondetypes*) Constante (*Dclarationdeconstantes*) Variable (*Dclarationdevariables*) Dfinitiondesousprogrammes Dbut (*instructionsduprogramme*) Fin

Entteduprogramme

Corpsduprogramme

Rsolutiondunproblme
cinqtapes
tape0:comprhensiondelnoncduproblme. tape1:dcompositionduproblmeensousproblmes. tape2:spcificationdechaquesousproblme. tape3:algorithmelogiquedechaquesousproblme. tape4:algorithmedeprogrammationduproblme.

M. DIENG Abdoulaye

Initiation l'algorithmique

06/11/2012

Rsolutiondunproblme
comprhensiondel'nonc
Formulationoureformulationdutextequidcritle

problmersoudre.
Doitpermettrelacomprhensionduproblmeparsoi

mme:ambigut,compltude,cohrence?

Rsolutiondunproblme
dcomposition
Cettetapeestbasesurlastratgie diviserpourrgner . Commencerpardcomposerleproblmeinitialensous

problmes,puischaquesousproblmeendenouveaux sousproblmesetainsidesuitejusquauxproblmesque lonpeutrsoudrepartirdoprationsprimitives. Questionseposer:

quellessontlesgrandestapesraliser?
NB:ltapedeladcompositionnestpastoujoursncessaire

(casdunefonctionouduneprocdure).

M. DIENG Abdoulaye

Initiation l'algorithmique

06/11/2012

Rsolutiondunproblme
spcification Pourchaquesousproblmedterminer: 1. lesdonnesdentre; 2. lesdonnesdesortie; 3. letraitementfaire: a. dterminerlesformules,quationsetconstantes; b. dterminerlescasderreurs. Unebonnespcificationdtermine: letypedesdonnesenentreetensortie; commentlesdonnesserontutilises; lesfonctionslesmodifiant; lesconstantesutilises.

Rsolutiondunproblme
algorithmelogique
Constituuniquementdesinstructions(enpseudo

langage)indispensablesautraitement :pasdentteni instructiondeprsentation


Prvoirventuellementunlexiquedesvariableset

constantesutilises.
NB:sileproblmeinitialestunefonctionouune

procdure,cettetapeconstituesadfinition.

M. DIENG Abdoulaye

Initiation l'algorithmique

06/11/2012

Rsolutiondunproblme
algorithmedeprogrammation
Algorithmecompletavecentteetinstructionsde

prsentation
Algorithmequonpourratraduireenlangagede

programmation
NB:sileproblmeinitialestunefonctionouune

procdure,cettetapeconstituesontestouappel.

Notiondidentificateur
Nomdonnauxdiversescomposantes(types,constantes,

variablesetsousprogrammes)d'unprogramme. Formdelettresalphabtiquesetdechiffresainsiquedu caractre _ (espacesoulign). Le1er caractrenedoitpastreunchiffre. Lidentificateurdoittresuffisammentexplicite. Lesvariablesetlessousprogrammescommencent toujoursparuneminuscule. Lestypescommencenttoujoursparunemajuscule. Lesconstantesnesontcomposesquedemajuscules. Lorsquelidentifiantcontientplusieursmots,onarticule cesmotsavecdesmajusculesouaveclecaractre_. Exemples:note1,fin_de_fichier,finDeFichier,TVA,PI Contreexemples:4eme,x#y,note1,note1.

M. DIENG Abdoulaye

Initiation l'algorithmique

06/11/2012

Notiondevariable
Une variable permet de dsigner un emplacement mmoire et possde :
une valeur ou contenu provisoire ; un type dcrivant un ensemble de valeurs et un ensemble

d'oprateurs sur ces valeurs ; un identificateur ou nom permettant laccs au contenu.


NB : toute variable utilise dans le corps du programme doit dabord tre

dclare dans lentte.


Dclaration dune ou de plusieurs variables :

Variable identificateur1[,identificateur2, ] : Type

Typededonnes
Un type de donnes caractrise lensemble des :
valeurs que peut prendre une variable ; actions que lon peut effectuer sur une variable.

Une fois quun type de donnes est associ une variable,


le contenu de cette variable doit tre du mme type ; cette variable ne peut plus changer de type.

Il y a deux grandes catgories de type :


les types simples ; les types complexes ou composites.

M. DIENG Abdoulaye

Initiation l'algorithmique

06/11/2012

Typessimples
numriques
Naturel : entiers positifs (sous-ensemble de IN) Entier : positifs et ngatifs (sous-ensemble de Z) Rel : sous-ensemble de IR

exemples : 0.1, -1.2 (attention utilisation du . la place de la ,)


Exemples de dclaration de variables numriques

Variable age : naturel temperature : entier taille : rel

Typessimples
boolen,caractreetchanedecaractres
Boolen : les variables ne prennent que les valeurs VRAI ou FAUX Caractre : lettre, chiffre ou symbole (visible ou non) entour par de

simples quotes (apostrophes) Chane de caractres : suite de caractres entoure de doubles quotes (guillemets).
Exemples

Variable masculin : boolen initiale : caractre nom : chane de caractres

M. DIENG Abdoulaye

10

Initiation l'algorithmique

06/11/2012

Notiondeconstante
Une constante reprsente une donne qui ne change jamais

durant tout le programme


Une constante a un type et une valeur Syntaxe de la dclaration dune constante :

constante identificateur valeur


Lorsque lidentifiant dune constante contient plusieurs mots, on

les articule avec le caractre _.

Lesoprateurs
arithmtiques

Six oprateurs arithmtiques : addition (+), soustraction (-),

multiplication (x), division (/), division entire (DIV), reste de la division entire ou modulo (MOD).
Leurs oprandes peuvent tre des entiers ou des rels hormis ceux

des deux derniers qui agissent uniquement sur des entiers.


Lorsque les types des deux oprandes sont diffrents, il y a

conversion implicite dans le type le plus fort. naturel < entier < rel

M. DIENG Abdoulaye

11

Initiation l'algorithmique

06/11/2012

Lesoprateurs
relationnels

Six oprateurs relationnels


< > =

infrieur infrieur ou gal suprieur suprieur ou gal gal diffrent de

Le rsultat dune comparaison est un boolen

Lesoprateurs
logiques

Trois oprateurs logiques : ET, OU, NON Tables de vrit


A B AETB AOUB NONA V V V V F V F F V F F F F F V F V F V V Vraie sitouslesoprandessontvrais Vraiesiaumoinslun desoprandesestvrai

Lvaluation est faite de gauche droite et le processus est interrompu

ds que le rsultat final est dtermin. Lois de Morgan NON (A ET B) (NON A) OU (NON B) NON (A OU B) (NON A) ET (NON B)

M. DIENG Abdoulaye

12

Initiation l'algorithmique

06/11/2012

Lesoprateurs
prioritetassociativit

Lorsque plusieurs oprateurs sont utiliss dans la mme instruction,

certains sont prioritaires par rapport d'autres. Exemple : -2+4*3=10


Les parenthses permettent de modifier lordre de priorit par dfaut

Exemple : -(2+4)*3=18
Si les oprateurs ont la mme priorit, l'associativit dtermine leur

ordre d'excution. Exemple : 2+1 8/2*3=13

Lesoprateurs
Associativitetprioritsparordredcroissant
+ p r i o r i t a i r e

Catgorie Rfrence Unaire Arithmtique Arithmtique Relationnel Relationnel Logique Logique

Oprateurs ( ) [ ] . -> +, -, NON *, /, DIV, MOD +, <, , >, =, ET OU

Associativit GD DG GD GD GD GD GD GD

M. DIENG Abdoulaye

13

Initiation l'algorithmique

06/11/2012

Laffectation
prsentation

Avec le symbole , laffectation a pour principal but dattribuer une

valeur une variable Sa syntaxe est : IdentificateurDeLaVariable Valeur (ou expression) La signification de lutilisation dun identificateur de variable diffre suivant sa position : gauche du symbole daffectation, lidentifiant nous permet de modifier la valeur de la variable droite du symbole daffectation, lidentifiant nous permet dobtenir la valeur de la variable

Laffectation
exemple

Linstruction daffectation c a + b (avec a, b et c de type entier) se

comprend de la faon suivante : on prend la valeur contenue dans la variable a on prend la valeur contenue dans la variable b on additionne ces deux valeurs on met ce rsultat dans la variable c
NB : Si c avait auparavant une valeur, cette dernire est perdue !

M. DIENG Abdoulaye

14

Initiation l'algorithmique

06/11/2012

Lesentres/sorties
Un algorithme peut avoir des interactions avec l'utilisateur. Il peut afficher un rsultat (du texte ou le contenu d'une variable) ou

demander l'utilisateur une information afin de la stocker dans une variable. Pour afficher une information on utilise la commande crire suivie, entre parenthses, de la chane de caractres entre guillemets et/ou des variables de type simple afficher spares par des virgules. Exemple : crire("La valeur de la variable a est", a) Pour donner la possibilit l'utilisateur de saisir une information on utilise la commande lire suivie, entre parenthses, de la variable de type simple qui va recevoir la valeur saisie par l'utilisateur. Exemple : lire(b)

Applications1et2
App1:calculeretafficherlasommededeuxentiers

donnsparlutilisateur

App2:calculeretafficherlaireduncercledont

lutilisateurdonneralerayon.(FixerPI3,14)

M. DIENG Abdoulaye

15

Initiation l'algorithmique

06/11/2012

Structuresdecontrle
prsentation
En programmation procdurale le processeur excute les instructions

dune manire squentielle. Tant qu'une instruction n'est pas termine, il attend avant de continuer. Par exemple, une instruction de lecture va attendre que l'utilisateur rentre une valeur avant de continuer. Parfois, il est ncessaire que le processeur n'excute pas toutes les instructions, ou encore qu'il recommence plusieurs fois les mmes instructions : c'est le rle des structures de contrle. Il existe deux grands types de structures de contrle : les structures conditionnelles ; les structures rptitives (ou itratives) ou boucles.

Structuresdecontrle
structureconditionnellestricte
Cette structure est utilise si on veut excuter un traitement (instruction

simple ou compose) seulement si une condition est vraie et ne rien faire si la condition est fausse. Sa syntaxe : Si (condition) Alors traitement FinSi Que le traitement soit excut ou non, le programme continue normalement son excution aprs linstruction FinSi. Application 3 Dans un programme de calcul d'une facture, on veut effectuer une remise de 1% si le montant de la commande dpasse 1000 F. crire le morceau dalgorithme effectuant ventuellement cette remise avant dafficher le montant de la facture.

M. DIENG Abdoulaye

16

Initiation l'algorithmique

06/11/2012

Structuresdecontrle
structureconditionnellealternative
Elle permet d'excuter deux traitements diffrents en fonction de la

valeur boolenne dune condition. Sa syntaxe : Si (condition) alors traitement_1 Sinon traitement_2 FinSi Aprs lexcution du traitement 1 ou du traitement 2, le programme continue normalement son excution juste aprs linstruction Finsi. Application 4 Ecrire un programme qui affiche un message prcisant la parit dun entier donn par lutilisateur.

Structuresdecontrle
structureconditionnellealternativemultiple La structure Sinon Si permet d'excuter plusieurs traitements diffrents en fonction de valeurs boolennes de plusieurs conditions. Sa syntaxe : Si (condition_1) Alors traitement_1 Sinon si (condition_2) Alors traitement_2 Sinon (*Si aucune des n-1 conditions nest vraie*) traitement_n FinSi Application 5 Comparer deux nombres donns par lutilisateur en offrant trois possibilits daffichage du rsultat.

M. DIENG Abdoulaye

17

Initiation l'algorithmique

06/11/2012

Structuresdecontrle
structureconditionnelledechoix
La structure Selon permet de choisir le traitement effectuer en

fonction de la valeur d'une variable ou d'une expression. Sa syntaxe : Selon (expression) Faire valeur 1 de l'expression : traitement 1 valeur 2 de l'expression : traitement 2 [Sinon traitement par dfaut] FinSelon Lexpression est de type entier ou caractre. Application 6 : Simuler une calculette simple dopration (+,-,*,/). Loprateur et les oprandes sont entrs par lutilisateur. NB : lors dune division, faire attention au second oprande.

Structuresdecontrle

structureitrative TantqueFaire La boucle Tant que Faire permet de rpter un traitement tant qu'une expression conditionnelle est vraie. Sa syntaxe : Tant que (condition) faire traitement finTantQue La condition est teste avant la premire excution du traitement Ce traitement peut dailleurs ne jamais sexcuter. Il est ncessaire dinitialiser la condition pour le premier passage. Il faut sassurer que le traitement fait voluer la condition pour que la terminaison de la boucle soit assure. Lorsque la condition devient fausse le programme continue normalement son excution aprs linstruction qui suit le FinTantQue. App 7:Programme qui exige la saisie dune valeur > 0 avant de lafficher.

M. DIENG Abdoulaye

18

Initiation l'algorithmique

06/11/2012

Structuresdecontrle
structureitrative FaireTantque
La boucle Faire Tant que permet de rpter un traitement tant qu'une

expression conditionnelle est vraie. Sa syntaxe Faire traitement Tant que (condition) Le traitement sexcute au moins une fois et linitialisation de la condition pourra se faire lintrieur de la boucle Lorsque la condition devient fausse, la boucle se termine et le programme continue normalement son excution aprs linstruction Tant que (condition). Application 8 : mme programme que le prcdent

Structuresdecontrle
structureitrative Pour
La boucle Pour permet de rpter un traitement un nombre connu de

fois. Sa syntaxe Pour var_compteur val_initiale val_finale [pas de p] faire traitement FinPour La variable compteur est de type entier ; elle est initialise la valeur initiale et elle augmente (implicitement) de p chaque rptition du traitement. Par dfaut, lincrment p est de 1. Lorsque la variable compteur vaut la valeur finale, le traitement est excut une dernire fois puis le programme sort de la boucle. App 9 : Afficher les nombres pairs strictement infrieurs un entier donn par lutilisateur.

M. DIENG Abdoulaye

19

Initiation l'algorithmique

06/11/2012

Lestableaux
prsentation

Un tableau permet de dsigner sous un seul nom un regroupement de

donnes de mme type. Chaque donne est repre par un indice (entier naturel) Dclaration dun tableau une dimension : nom_tab : tableau [dim] de type_des_donnes Notation dune donne ou variable indice : nom_tab[indice] Lindice varie de 0 dim 1. Exemples : Variable chiffres : tableau[10] dentiers voyelles : tableau [6] de caractres
donnes indices 'a' 0 'e' 1 'i' 2 'o' 3 'u' 4 'y' 5

Dans ce cas la donne 'e' est note par voyelles[1] App10 : Saisir un tableau de N notes, puis afficher le nombre de notes suprieures ou gales la moyenne des N notes. N tant une constante.

Lestableaux
tableauxdeuxdimensions

Dclaration: nom_tab : tableau[Ligne][Colonne] de type_des_donnes Exemples : voyelles : tableau[2][3] de caractres


'a' 'e' 'i' 'o' 'u' 'y'

Ce tableau deux dimensions est interprt comme un tableau ( une


'a' 'e' 'i'
0 1 2

dimension) de taille Ligne dont chaque composante est un tableau ( une dimension) de taille Colonne.
'o' 'u' 'y'
0 1 2

Un tel tableau est reprsent en mmoire par un tableau une seule


'a' 'e' 'i'
0,0 0,1 0,2

dimension dans lequel les lignes (ou tableaux stocks) sont concatnes
'o' 'u' 'y'
1,0 1,1 1,2

M. DIENG Abdoulaye

20

Initiation l'algorithmique

06/11/2012

Lestableaux
tableauxdeuxdimensions(suiteetfin)

Notation dune donne:

nom_tab[ i ][ j ] avec 0 i < Ligne et 0 j < Colonne Les donnes sont ranges suivant lordre obtenu en faisant varier le dernier indice en premier.
0 1

'a' 'e' 'i'


0 1 2

'o' 'u' 'y'


0 1 2

'a' 'e' 'i'


0,0 0,1 0,2

'o' 'u' 'y'


1,0 1,1 1,2

'a' 'e'
0 1

'i'
2

'o' 'u' 'y'

la donne 'e' est note par voyelles[0][1] Application 11 : Saisir une matrice dentiers 2x2, puis afficher son dterminant. On rappelle que : det c

b = ad bc d

Lessousprogrammes
prsentation

Les sous-programmes permettent de


dcomposer un problme en sous-problmes ; dcouper le programme pour facilit la lisibilit et le dbogage ; rutiliser du code qui revient souvent.

Comme le programme principal, tout sous-programme possde un nom,

des variables, des instructions, un dbut et une fin. Mais un sous-programme nest excut que lorsquil est appel par un autre (sous-)programme. Il existe deux types de sous-programmes : la procdure faisant une certaine tche ; la fonction renvoyant en plus une valeur rsultat. L'appel d'une procdure constitue une instruction en lui-mme. L'appel d'une fonction est remplac l'excution par la valeur retourne par celle-ci. Il doit forcment se trouver dans un calcul, une affectation, un affichage, un test, etc.

M. DIENG Abdoulaye

21

Initiation l'algorithmique

06/11/2012

Lessousprogrammes
visibilitdesvariables

Une variable dclare dans un sous-programme est dite locale et nest

utilisable que par ce sous-programme.

Une variable globale est dclare lextrieur des sous-programmes et

est visible partout dans le programme. Le mme nom de variable peut dsigner plusieurs variables locales diffrentes. En revanche, une variable globale n'existe qu'en un seul exemplaire pour tous les sous-programmes. Lorsque le nom d'une variable locale est identique une variable globale, la variable globale est localement masque; dans ce sousprogramme la variable globale devient inaccessible.

Lessousprogrammes
lesparamtres

Rappelons quun sous-programme nest excut que lorsquil est appel

par un autre (sous-)programme. La communication entre sous-programme appele et (sous-)programme appelant se fait par l'intermdiaire de variables particulires et locales au sous-programme appel que lon nomme paramtres formels. Lors de lappel, tout paramtre formel est associ une variable ou constante de mme type nomme paramtre effectif du (sous-)programme appelant. Il existe trois types d'association ou de passage de paramtre : le passage de paramtres en entre ; le passage de paramtres en sortie ; le passage de paramtres en entre/sortie.

M. DIENG Abdoulaye

22

Initiation l'algorithmique

06/11/2012

Lessousprogrammes
passagedeparamtres(schmacomparatif)

Paramtre en entre Paramtre en sortie Paramtre en entre et sortie


Sousprogramme

Cl USB CD vierge CDROM

Lessousprogrammes
passagedeparamtresenentre

Les instructions du sous-programme appel ne peuvent pas modifier le

paramtre effectif. En fait c'est uniquement la valeur du paramtre effectif qui est copie dans le paramtre formel C'est le seul passage de paramtre qui admet l'utilisation d'une constante comme paramtre effectif. Exemples : le sous-programme sqrt() permettant de calculer la racine carre d'un nombre admet un paramtre en entre le sous-programme crire() qui permet d'afficher des informations admet des paramtres en entre.

M. DIENG Abdoulaye

23

Initiation l'algorithmique

06/11/2012

Lessousprogrammes
passagedeparamtresensortie

Les instructions du sous-programme appel affectent obligatoirement

une valeur au paramtre formel (valeur qui est donc aussi affecte au paramtre effectif associ) Eviter dutiliser des constantes comme paramtre effectif pour ce type de passage de paramtres. La valeur que pouvait possder le paramtre effectif n'est pas utilise par le sous-programme appel.

Exemple :

Le sous-programme lire() qui permet de mettre dans des variables des valeurs entrs par l'utilisateur admet des paramtres en sortie

Lessousprogrammes
passagedeparamtresenentre/sortie

Passage de paramtre qui combine les deux prcdentes A utiliser lorsque le sous-programme appele doit utiliser puis modifier la

valeur du paramtre effectif. Comme pour le passage de paramtre en sortie, on ne peut pas utiliser une constante comme paramtre effectif

Exemple :

Le sous-programme changer() qui permet d'changer les valeurs de deux variables admet des paramtres en entre/sortie

M. DIENG Abdoulaye

24

Initiation l'algorithmique

06/11/2012

Lessousprogrammes
lesfonctions

Une fonction est un sous-programme admettant des paramtres et

retournant un seul rsultat (comme en Maths y=f(a,b,c,)). Une fonction possde un type qui est celui de la valeur retourne Le passage de paramtres est uniquement en entre Les paramtres effectifs peuvent tre des variables, des constantes mais aussi des rsultats de fonctions Syntaxe de la dfinition dune fonction:
Fonction nomFonction( nomParam1:typeParam1[,] ):typeRslt Variable Dclaration des variables locales Dbut instructions retourne rslt FinFonction

App 12 : dfinir et tester la fonction abs() qui retourne la valeur absolue dun entier

Lessousprogrammes
lesprocdures

Une procdure est un sous-programme qui ne retourne aucun rsultat Par contre elle peut admettre des paramtres avec des passages :
en entre, prfixs par E (ou ) en sortie, prfixs par S (ou ) en entre/sortie, prfixs par E/S (ou ) Syntaxe de la dfinition dune procdure : Procdure nomProcedure([ nomParam1:typeParam1[,] ]) Variable Dclaration des variables locales Dbut instructions finProcdure

App 13 : dfinir et tester la procdure changer() qui permet d'changer

les valeurs de deux variables

M. DIENG Abdoulaye

25

Initiation l'algorithmique

06/11/2012

Lessousprogrammes
rcursivit

Un sous-programme rcursif est un sous-programme qui s'appelle lui-

mme dans sa dfinition.


La dfinition dun sous-programme rcursif se fait, avec :

une ou plusieurs conditions d'arrt, pour traiter les cas de base ; 2. un (ou plusieurs) appel(s) rcursif(s), qui permet(tent) de rsoudre le problme traiter partir d'appels sur des arguments plus petits.
1.

Pour que l'algorithme se termine, il faut veiller ce que toute suite

dappels rcursifs conduise un cas de base.

Lessousprogrammes
Syntaxe
rcursivit(syntaxe)
Procdure (ou Fonction) ss_prog_recursif(arg) Variable Dclaration des variables locales Dbut Si(TEST_D'ARRET) alors instructions du point d'arrt Sinon instructions; ss_prog_recursif(autre arg );//appel rcursif instructions; finSi finProcdure(ou finFonction)

Application 14

Dfinir et tester une fonction rcursive qui calcule la factorielle d'un entier naturel.

M. DIENG Abdoulaye

26

Initiation l'algorithmique

06/11/2012

Lesenregistrements
prsentation

Un enregistrement est une structure de donnes dont les lments Il permet ainsi de regrouper des informations qui vont ensemble

(ou champs) peuvent tre de types diffrents.

sous un seul nom afin de les manipuler plus facilement. Syntaxe de la dclaration dun enregistrement:
La dclaration du type structur doit prcder celle de
Variable

nom_enregistrement : nom_type

lenregistrement correspondant. Syntaxe de la dclaration dun type structur:

Syntaxe de laccs un champ dun enregistrement: Le champs sutilise comme une variable simple

TYPE nom_type=structure nom_champ1 : type_champ1 nom_champN : type_champN finStructure

nom_enregistrement.nom_champ

Lesenregistrements
application

Application 15 : On se propose de crer un programme qui affiche un message du type :


un(e) orange cote 200 F CFA

Indications : On suppose quun fruit est modlis par son nom et son prix. Aprs avoir dfini le type T_fruit et dclar une variable e_fruit1 de ce type, saisir les informations relatives cette variable avant dafficher le message demand.

M. DIENG Abdoulaye

27

Initiation l'algorithmique

06/11/2012

Lespointeurs
prsentation

Un pointeur est une variable spciale qui peut contenir l'adresse d'une

autre variable. Lorsque la variable pointe fait plus d'un seul octet, ce qui est videmment trs souvent le cas, c'est l'octet de dbut (le premier de la suite d'octets qui stockent la variable) qui est point. Une variable pointeur occupe toujours la taille quoccupe un entier : une adresse mmoire est un entier crit en hexadcimal. Les principaux intrts des pointeurs rsident dans la possibilit dallouer de la mmoire au moment de lexcution, ce qui permet la gestion des tableaux de tailles variables ainsi que des structures de donnes rcursives comme les listes chanes. Les pointeurs sont, entre autres, utiliss par le C, le C++, le Pascal et C#.

Lespointeurs
utilisation

Loprateur & permet daffecter l'adresse d'une variable un pointeur. L'oprateur * permet daccder au contenu de la variable pointe. Il faut toujours initialiser ( dfaut NIL ie une zone mmoire vide )

un pointeur pour viter quil pointe nimporte o. Dclaration dun pointeur: nom_ptr : pointeur sur type_point

Exemple 1

< identificateurs < valeurs < adresses

A : entier P NIL : pointeur sur entier A 10 P &A Ecrire( "la variable pointe A contient ", *P)

M. DIENG Abdoulaye

28

Initiation l'algorithmique

06/11/2012

Lespointeurs
pointeursurunenregistrement
Un pointeur peut mmoriser l'adresse d'un enregistrement. Dans ce cas, on peut accder aux champs de l'enregistrement point

en utilisant l'oprateur :

nom_pointeurnom_champ

Application 16 : ( complter) Programme pointeurSurEnregistrement Type T_fruit = structure nom : chane prix : naturel finStructure Variable e_fruit1: T_fruit p_fruit NIL : pointeur sur T_fruit Dbut e_fruit1.nom "mangue" e_fruit1.prix 200 (*Terminer le programme en utilisant p_fruit pour afficher le nom et le prix de e_fruit1 *) Fin

Lespointeurs
ajoutdunentier

En ajoutant un entier un pointeur, un dcalage dadresse se fait par

rapport la taille en octet de l'objet point.


Exemple 1:

adr : pointeur sur rel adr adr + 1 ; (* reprsente l'adresse du rel qui suit l'adresse du rel contenue dans adr *)
On peut aussi ajouter un entier suprieur 1: adr adr + 12

M. DIENG Abdoulaye

29

Initiation l'algorithmique

06/11/2012

Lespointeurs
gestionmmoire

Un programme utilise quatre zones mmoires : la zone de code, la zone

dallocation statique, la pile et le tas.


Zone de code Zone statique tas

Zone libre

La zone de code contient les instructions du programme; sa taille et son

contenu ne varient pas au cours de lexcution. La zone dallocation statique stocke les variables qui durent tout le temps de lexcution du programme (variables globales et variables locales statiques); sa taille est fixe (64Ko) mais son contenu peut changer. La pile stocke les variables ayant une dure de vie limite un sousprogramme (les variables locales); la pile forme un bloc contigu de mmoire qui varie en taille. Le tas est la zone des emplacements mmoires obtenus par allocation dynamique (grce aux pointeurs); les donnes stockes dans le tas ne forment pas ncessairement un bloc contigu de mmoire.

Lespointeurs
gestionmmoire(suiteetfin)
La fonction allouer(nbr, type_point) retourne un pointeur qui stocke ladresse La procdure dsallouer(nom_pointeur) libre la mmoire prcdemment Exemple 2 Programme pointeurSurEntier Variable ptr NIL : pointeur sur entier Dbut ptr allouer(1, entier) ecrire("donnez un entier:") lire(* ptr) ecrire("vous avez donn :", * ptr) dsallouer (ptr) Fin Application 17 :

du bloc de mmoire alloue ou NIL si lallocation est impossible. allou via allouer() pour conomiser la mmoire.

Afficher le nombre de notes suprieures ou gales la moyenne de notes dont le nombre et les valeurs sont entrs par lutilisateur.

M. DIENG Abdoulaye

30

Vous aimerez peut-être aussi