Vous êtes sur la page 1sur 12

21/12/2015

Lesfonctions

LESFONCTIONS
NoustermineronslapartieIducours(Lesbases)parcettenotionfondamentalequesontles
fonctionsenlangageC.TouslesprogrammesenCsebasentsurleprincipequejevaisvousexpliquer
danscechapitre.
Nousallonsapprendrestructurernosprogrammesenpetitsboutsunpeucommesionjouaitaux
Legos.
TouslesgrosprogrammesenCsontenfaitdesassemblagesdepetitsboutsdecode,etcespetits
boutsdecodesontjustementcequ'onappelledesfonctions!

Creretappelerunefonction
Nousavonsvudanslestoutpremierschapitresqu'unprogrammeenCcommenaitparunefonction
appele main .
Jevousavaismmefaitunschmarcapitulatif,pourvousrappelerquelquesmotsdevocabulaire(fig.
suivante).

Enhaut,onytrouvelesdirectivesdeprprocesseur(unnombarbaresurlequelonreviendra
d'ailleurs).Cesdirectivessontfacilesidentifier:ellescommencentparun # etsontgnralement
misestoutenhautdesfichierssources.
Puisendessous,ilyavaitcequej'avaisdjappelunefonction.Ici,surmonschma,vousvoyez
unefonction main (pastropremplieilfautlereconnatre).
Jevousavaisditqu'unprogrammeenlangageCcommenaitparlafonction main .Jevousrassure,
c'esttoujoursvrai!Seulement,jusqu'icinoussommesrestsl'intrieurdelafonction main .Nous
n'ensommesjamaissortis.Revoyezvoscodessourcesetvousverrez:noussommestoujoursrests
l'intrieurdesaccoladesdelafonction main .
Ehbien,c'estmald'avoirfaitcommea?
Noncen'estpasmal,maiscen'estpascequelesprogrammeursenCfontdanslaralit.
Quasimentaucunprogrammen'estcrituniquementl'intrieurdesaccoladesdelafonction main .
Jusqu'icinosprogrammestaientcourts,doncaneposaitpasdegrosproblmes,maisimaginezdes
plusgrosprogrammesquifontdesmilliersdelignesdecode!Sitouttaitconcentrdansla
fonction main ,bonjourlebazar

https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

1/12

21/12/2015

Lesfonctions

Nousallonsdoncmaintenantapprendrenousorganiser.Nousallonsenfaitdcoupernos
programmesenpetitsbouts(souvenezvousdel'imagedesLegosquejevousaidonnetout
l'heure).Chaquepetitboutdeprogrammeseracequ'onappelleunefonction.
Unefonctionexcutedesactionsetrenvoieunrsultat.C'estunmorceaudecodequisertfaire
quelquechosedeprcis.
Onditqu'unefonctionpossdeuneentreetunesortie.Lafig.suivantereprsenteunefonction
schmatiquement.

Lorsqu'onappelleunefonction,ilyatroistapes.
1. L'entre:onfaitrentrerdesinformationsdanslafonction(enluidonnantdesinformations
aveclesquellestravailler).
2. Lescalculs:grceauxinformationsqu'elleareuesenentre,lafonctiontravaille.
3. Lasortie:unefoisqu'elleafinisescalculs,lafonctionrenvoieunrsultat.C'estcequ'onappelle
lasortie,ouencoreleretour.
Concrtement,onpeutimaginerparexempleunefonctionappele triple quicalculeletripledu
nombrequ'onluidonne,enlemultipliantpar3(fig.suivante).Bienentendu,lesfonctionsseronten
gnralpluscompliques.

Lebutdesfonctionsestdoncdesimplifierlecodesource,pournepasavoirretaperlemmecode
plusieursfoisd'affile.
Rvezunpeu:plustard,nouscreronsparexempleunefonction afficherFenetre quiouvriraune
fentrel'cran.Unefoislafonctioncrite(c'estl'tapelaplusdifficile),onn'auraplusqu'direHep
!toilafonction afficherFenetre ,ouvremoiunefentre!.Onpourraaussicrireune
fonction deplacerPersonnage dontlebutseradedplacerlepersonnaged'unjeul'cran,etc.

Schmad'unefonction
Vousavezdjeuunaperudelafaondontestfaiteunefonctionaveclafonction main .
Cependantpourbienquevouscompreniezilvafalloirquejevousmontrequandmmecommenton
construitunefonction.
Lecodesuivantreprsenteunefonctionschmatiquement.C'estunmodleconnatre:
https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

2/12

21/12/2015

Lesfonctions

typenomFonction(parametres)
{
//Insrezvosinstructionsici
}

Vousreconnaissezlaformedelafonction main .
Voicicequ'ilfautsavoirsurceschma.
type (correspondlasortie):c'estletypedelafonction.Commelesvariables,les
fonctionsontuntype.Cetypedpenddursultatquelafonctionrenvoie:silafonction
renvoieunnombredcimal,vousmettrezsrement double ,siellerenvoieunentier
vousmettrez int ou long parexemple.Maisilestaussipossibledecrerdesfonctions
quinerenvoientrien!
Ilyadoncdeuxsortesdefonctions:
lesfonctionsquirenvoientunevaleur:onleurmetundestypesquel'onconnat
( char , int , double ,etc.)
lesfonctionsquinerenvoientpasdevaleur:onleurmetuntypespcial void (qui
signifievide).
nomFonction :c'estlenomdevotrefonction.Vouspouvezappelervotrefonction
commevousvoulez,dutempsquevousrespectezlesmmesrglesquepourles
variables(pasd'accents,pasd'espaces,etc.).
parametres (correspondl'entre):entreparenthses,vouspouvezenvoyerdes
paramtreslafonction.Cesontdesvaleursaveclesquelleslafonctionvatravailler.
Vouspouvezenvoyerautantdeparamtresquevouslevoulez.Vouspouvezaussi
n'envoyeraucunparamtrelafonction,maisasefaitplusrarement.
Parexemple,pourunefonction triple ,vousenvoyezunnombreenparamtre.Lafonction
rcuprecenombreetencalculeletriple,enlemultipliantpar3.Ellerenvoieensuitelersultatde
sescalculs.
Ensuitevousavezlesaccoladesquiindiquentledbutetlafindelafonction.l'intrieurdeces
accoladesvousmettrezlesinstructionsquevousvoulez.Pourlafonction triple ,ilfaudra
taperdesinstructionsquimultiplientpar3lenombrereuenentre.
Unefonction,c'estdoncunmcanismequireoitdesvaleursenentre(lesparamtres)etquirenvoie
unrsultatensortie.

Crerunefonction
Voyonsunexemplepratiquesansplustarder:lafameusefonction triple dontjevousparledepuis
toutl'heure.Onvadirequecettefonctionreoitunnombreentierdetype int etqu'ellerenvoieun
nombreentieraussidetype int .Cettefonctioncalculeletripledunombrequ'onluidonne:
https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

3/12

21/12/2015

Lesfonctions

inttriple(intnombre)
{
intresultat=0;
resultat=3*nombre;//Onmultiplielenombrefournipar3
returnresultat;//Onretournelavariableresultatquivautletripledenombre
}

Voilnotrepremirefonction!Unepremirechoseimportante:commevouslevoyez,lafonctionest
detype int .Elledoitdoncrenvoyerunevaleurdetype int .
Entrelesparenthses,vousavezlesvariablesquelafonctionreoit.Ici,notrefonction triple reoit
unevariabledetype int appele nombre .
Lalignequidonnepourconsignederenvoyerunevaleurestcellequicontientle return .Cette
lignesetrouvegnralementlafindelafonction,aprslescalculs.
returnresultat;

Cecodesignifiepourlafonction:Arrtetoiletrenvoielenombre resultat .Cette


variable resultat DOITtredetype int ,carlafonctionrenvoieun int commeonl'aditplus
haut.
Lavariable resultat estdclare(=cre)danslafonction triple .Celasignifiequ'ellen'est
utilisablequedanscettefonction,etpasdansuneautrecommelafonction main parexemple.C'est
doncunevariableproprelafonction triple .
Maisestcelafaonlapluscourted'crirenotrefonction triple ?
Non,onpeutfairetoutcelaenuneligneenfait:
inttriple(intnombre)
{
return3*nombre;
}

Cettefonctionfaitexactementlammechosequelafonctiondetoutl'heure,elleestjusteplusrapide
crire.Gnralement,vosfonctionscontiendrontplusieursvariablespoureffectuerleurscalculset
leursoprations,raresserontlesfonctionsaussicourtesque triple .

Plusieursparamtres,aucunparamtre
Plusieursparamtres
Notrefonction triple contientunparamtre,maisilestpossibledecrerdesfonctionsacceptant
plusieursparamtres.
Parexemple,unefonction addition quiadditionnedeuxnombres a et b :
intaddition(inta,intb)
{
returna+b;
}

Ilsuffitdesparerlesdiffrentsparamtresparunevirgulecommevouslevoyez.
Aucunparamtre
Certainesfonctions,plusrares,neprennentaucunparamtreenentre.Cesfonctionsferont
https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

4/12

21/12/2015

Lesfonctions

gnralementtoujourslammechose.Eneffet,siellesn'ontpasdenombressurlesquelstravailler,
vosfonctionsservirontjusteeffectuercertainesactions,commeafficherdutextel'cran.Etencore,
ceseraforcmenttoujourslemmetextepuisquelafonctionnereoitaucunparamtresusceptiblede
modifiersoncomportement!
Imaginonsunefonction bonjour quiaffichejusteBonjourl'cran:
voidbonjour()
{
printf("Bonjour");
}

Jen'airienmisentreparenthsescarlafonctionneprendaucunparamtre.
Deplus,j'aiutilisletype void dontjevousaiparlplushaut.
Eneffet,commevouslevoyezmafonctionn'apasnonplusde return .Elleneretournerien.Une
fonctionquineretournerienestdetype void .

Appelerunefonction
Onvamaintenanttesteruncodesourcepours'entranerunpeuaveccequ'onvientd'apprendre.
Nousallonsutilisernotrefonction triple (dcidmentjel'aimebien)pourcalculerletripled'un
nombre.
Pourlemoment,jevousdemanded'crirelafonction triple AVANTlafonction main .Sivousla
placezaprs,anemarcherapas.Jevousexpliqueraipourquoiparlasuite.
Voiciuncodetesteretcomprendre:
#include<stdio.h>
#include<stdlib.h>
inttriple(intnombre)
{
return3*nombre;
}
intmain(intargc,char*argv[])
{
intnombreEntre=0,nombreTriple=0;

printf("Entrezunnombre...");
scanf("%d",&nombreEntre);

nombreTriple=triple(nombreEntre);
printf("Letripledecenombreest%d\n",nombreTriple);

return0;
}

Notreprogrammecommenceparlafonction main commevouslesavez.


Ondemandel'utilisateurd'entrerunnombre.Onenvoiecenombrequ'ilaentrla
fonction triple ,etonrcuprelersultatdanslavariable nombreTriple .Regardezenparticulier
cetteligne,c'estlaplusintressantecarc'estl'appeldelafonction:
nombreTriple=triple(nombreEntre);

Entreparenthses,onenvoieunevariableenentrelafonction triple ,c'estlenombresurlequel


https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

5/12

21/12/2015

Lesfonctions

ellevatravailler.
Cettefonctionrenvoieunevaleur,valeurqu'onrcupredanslavariable nombreTriple .Onordonne
doncl'ordinateurdanscetteligne:Demandelafonction triple demecalculerletriple
de nombreEntre ,etstockelersultatdanslavariable nombreTriple .
Lesmmesexplicationssousformedeschma
Vousavezencoredumalcomprendrecommentafonctionneconcrtement?
Pasdepanique!Jesuissrquevousallezcomprendreavecmesschmas.
Cecodeparticulirementcommentvousindiquedansquelordrelecodeestlu.Commencezdoncpar
lirelalignenumrote1,puis2,puis3(bonvousavezcomprisjecrois!):
#include<stdio.h>
#include<stdlib.h>
inttriple(intnombre)//6
{
return3*nombre;//7
}
intmain(intargc,char*argv[])//1
{
intnombreEntre=0,nombreTriple=0;//2

printf("Entrezunnombre...");//3
scanf("%d",&nombreEntre);//4

nombreTriple=triple(nombreEntre);//5
printf("Letripledecenombreest%d\n",nombreTriple);//8

return0;//9
}

Voicicequisepasse,ligneparligne.
1. Leprogrammecommenceparlafonction main .
2. Illitlesinstructionsdanslafonctionuneparunedansl'ordre.
3. Illitl'instructionsuivanteetfaitcequiestdemand( printf ).
4. Demme,illitl'instructionetfaitcequiestdemand( scanf ).
5. Illitl'instructionAh!Onappellelafonction triple ,ondoitdoncsauterlalignedela
fonction triple plushaut.
6. Onsautelafonction triple etonrcupreunparamtre( nombre ).
7. Onfaitdescalculssurlenombreetonterminelafonction. return signifielafindelafonction
etpermetd'indiquerlersultatrenvoyer.
8. Onretournedansle main l'instructionsuivante.
9. Un return !Lafonctionmainsetermineetdoncleprogrammeesttermin.
https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

6/12

21/12/2015

Lesfonctions

Sivousavezcomprisdansquelordrel'ordinateurlitlesinstructions,vousavezdjcomprisle
principal.Maintenant,ilfautbiencomprendrequ'unefonctionreoitdesparamtresenentreet
renvoieunevaleurensortie(fig.suivante).

Note:cen'estpaslecasdetouteslesfonctions.Parfois,unefonctionneprendaucunparamtreen
entre,ouaucontraireelleenprendplusieurs(jevousaiexpliquaunpeuplushaut).
Demme,parfoisunefonctionrenvoieunevaleur,parfoisellenerenvoierien(danscecasiln'yapas
de return ).
Testonsceprogramme
Voiciunexempled'utilisationduprogramme:
Entrezunnombre...10
Letripledecenombreest30

Vousn'tespasobligsdestockerlersultatd'unefonctiondansunevariable!Vouspouvez
directementenvoyerlersultatdelafonctiontripleuneautrefonction,comme
si triple(nombreEntre) taitunevariable.
Regardezbienceci,c'estlemmecodemaisilyaunchangementauniveaududernier printf .De
plus,onn'apasdclardevariable nombreTriple caronnes'ensertplus:
#include<stdio.h>
#include<stdlib.h>
inttriple(intnombre)
{
return3*nombre;
}
intmain(intargc,char*argv[])
{
intnombreEntre=0;

printf("Entrezunnombre...");
scanf("%d",&nombreEntre);
https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

7/12

21/12/2015

Lesfonctions

//Lersultatdelafonctionestdirectementenvoyauprintfetn'estpasstockdans
unevariable
printf("Letripledecenombreest%d\n",triple(nombreEntre));

return0;
}

Commevouslevoyez, triple(nombreEntre) estdirectementenvoyau printf .


Quefaitl'ordinateurquandiltombesurcetteligne?
C'esttrssimple.Ilvoitquelalignecommencepar printf ,ilvadoncappelerlafonction printf .
Ilenvoielafonction printf touslesparamtresqu'onluidonne.Lepremierparamtreestletexte
afficheretlesecondestunnombre.
Votreordinateurvoitquepourenvoyercenombrelafonction printf ildoitd'abordappelerla
fonction triple .C'estcequ'ilfait:ilappelle triple ,ileffectuelescalculsde triple etunefois
qu'ilalersultatill'envoiedirectementdanslafonction printf !
C'estunpeuuneimbricationdefonctions.Etleplusfindanstouta,c'estqu'unefonctionpeuten
appeleruneautresontour!
Notrefonction triple pourraitappeleruneautrefonction,quiellemmeappelleraituneautre
fonction,etc.C'estaleprincipedelaprogrammationenC!Toutestcombin,commedansunjeude
Lego.
Aufinal,leplusdurserad'crirevosfonctions.Unefoisquevouslesaurezcrites,vousn'aurezplus
qu'appelerlesfonctionssansvoussoucierdescalculsqu'ellespeuventbienfairel'intrieur.ava
permettredesimplifierconsidrablementl'crituredenosprogrammesetacroyezmoionenaura
bienbesoin!

Desexemplespourbiencomprendre
Vousavezdvousenrendrecompte:jesuisunmaniaquedesexemples.
Lathoriec'estbien,maissionnefaitqueaonrisquedenepasretenirgrandchoseetsurtoutne
pascomprendrecomments'enservir,cequiseraitunpeudommage
Jevaisdoncmaintenantvousmontrerplusieursexemplesd'utilisationdefonctions,pourquevousayez
uneidedeleurintrt.Jevaism'efforcerdefairedescasdiffrentschaquefois,pourquevous
puissiezavoirdesexemplesdetouslestypesdefonctionsquipeuventexister.
Jenevousapprendrairiendenouveau,maisceseral'occasiondevoirdesexemplespratiques.Si
vousavezdjcompristoutcequej'aiexpliquavant,c'esttrsbienetnormalementaucundes
exemplesquivontsuivrenedevraitvoussurprendre.

Conversioneuros/francs
Oncommenceparunefonctiontrssimilaire triple ,quiaquandmmeunminimumd'intrt
cettefois:unefonctionquiconvertitleseurosenfrancs.Pourceuxd'entrevousquineconnatraient
pascesmonnaiessachezque1euro=6,55957francs.
Onvacrerunefonctionappele conversion .
Cettefonctionprendunevariableenentredetype double etretourneunesortiede
type double caronvaforcmentmanipulerdesnombresdcimaux.Lisezlaattentivement:
https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

8/12

21/12/2015

Lesfonctions

doubleconversion(doubleeuros)
{
doublefrancs=0;

francs=6.55957*euros;
returnfrancs;
}
intmain(intargc,char*argv[])
{
printf("10euros=%fF\n",conversion(10));
printf("50euros=%fF\n",conversion(50));
printf("100euros=%fF\n",conversion(100));
printf("200euros=%fF\n",conversion(200));

return0;
}
10euros=65.595700F
50euros=327.978500F
100euros=655.957000F
200euros=1311.914000F

Iln'yapasgrandchosedediffrentparrapportlafonction triple ,jevousavaisprvenus.


D'ailleurs,mafonction conversion estunpeulongueetpourraittreraccourcieenuneligne,jevous
laisselefairejevousaidjexpliqucommentfaireplushaut.
Danslafonction main ,j'aifaitexprsdefaireplusieurs printf pourvousmontrerl'intrtd'avoir
unefonction.Pourobtenirlavaleurde50euros,jen'aiqu'crire conversion(50) .Etsijeveuxavoir
laconversionenfrancsde100euros,j'aijustebesoindechangerleparamtrequej'envoiela
fonction(100aulieude50).
vousdejouer!crivezunesecondefonction(toujoursavantlafonction main )quiferaellela
conversioninverse:Francs=>Euros.Ceneserapasbiendifficile,ilyajusteunsigned'opration
changer.

Lapunition
Onvamaintenants'intresserunefonctionquinerenvoierien(pasdesortie).
C'estunefonctionquiaffichelemmemessagel'cranautantdefoisqu'onluidemande.Cette
fonctionprendunparamtreenentre:lenombredefoisoilfautafficherlapunition.
voidpunition(intnombreDeLignes)
{
inti;

for(i=0;i<nombreDeLignes;i++)
{
printf("Jenedoispasrecopiermonvoisin\n");
}
}
intmain(intargc,char*argv[])
{
punition(10);

return0;
}

https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

9/12

21/12/2015

Lesfonctions

Jenedoispasrecopiermonvoisin
Jenedoispasrecopiermonvoisin
Jenedoispasrecopiermonvoisin
Jenedoispasrecopiermonvoisin
Jenedoispasrecopiermonvoisin
Jenedoispasrecopiermonvoisin
Jenedoispasrecopiermonvoisin
Jenedoispasrecopiermonvoisin
Jenedoispasrecopiermonvoisin
Jenedoispasrecopiermonvoisin

Onaiciaffaireunefonctionquinerenvoieaucunevaleur.Cettefonctionsecontentejusted'effectuer
desactions(ici,elleaffichedesmessagesl'cran).
Unefonctionquinerenvoieaucunevaleurestdetype void ,c'estpourcelaqu'onacrit void .
parta,iln'yariendebiendiffrent.
Ilauraittbienplusintressantdecrerunefonction punition quis'adapten'importequelle
sanction.Onluiauraitenvoydeuxparamtres:letexterpteretlenombredefoisqu'ildoittre
rpt.Leproblme,c'estqu'onnesaitpasencoregrerletexteenC(aucasovousn'auriezpasvu,
jevousrappellequ'onn'afaitquemanipulerdesvariablescontenantdesnombresdepuisledbutdu
cours!).D'ailleurscesujet,jevousannoncequenousnetarderonspasapprendreutiliserdes
variablesquiretiennentdutexte.C'estpluscompliququ'iln'yparatetonnepouvaitpasl'apprendre
dsledbutducours!

Aired'unrectangle
L'aired'unrectangleestfacilecalculer: largeur*hauteur .
Notrefonctionnomme aireRectangle vaprendredeuxparamtres:lalargeuretlahauteur.Elle
renverral'aire.
doubleaireRectangle(doublelargeur,doublehauteur)
{
returnlargeur*hauteur;
}
intmain(intargc,char*argv[])
{
printf("Rectangledelargeur5ethauteur10.Aire=%f\n",aireRectangle(5,10));
printf("Rectangledelargeur2.5ethauteur3.5.Aire=%f\n",aireRectangle(2.5,3.5));
printf("Rectangledelargeur4.2ethauteur9.7.Aire=%f\n",aireRectangle(4.2,9.7));

return0;
}
Rectangledelargeur5ethauteur10.Aire=50.000000
Rectangledelargeur2.5ethauteur3.5.Aire=8.750000
Rectangledelargeur4.2ethauteur9.7.Aire=40.740000

Pourraitonafficherdirectementlalargeur,lahauteuretl'airedanslafonction?
Biensr!
https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

10/12

21/12/2015

Lesfonctions

Danscecas,lafonctionnerenverraitplusrien,ellesecontenteraitdecalculerl'aireetdel'afficher
immdiatement.
voidaireRectangle(doublelargeur,doublehauteur)
{
doubleaire=0;

aire=largeur*hauteur;
printf("Rectangledelargeur%fethauteur%f.Aire=%f\n",largeur,hauteur,aire);
}
intmain(intargc,char*argv[])
{
aireRectangle(5,10);
aireRectangle(2.5,3.5);
aireRectangle(4.2,9.7);

return0;
}

Commevouslevoyez,le printf estl'intrieurdelafonction aireRectangle etproduitlemme


affichagequetoutl'heure.C'estjusteunefaondiffrentedeprocder.

Unmenu
Cecodeestplusintressantetconcret.Oncreunefonction menu() quineprendaucunparamtre
enentre.Cettefonctionsecontented'afficherlemenuetdemandel'utilisateurdefaireunchoix.La
fonctionrenvoielechoixdel'utilisateur.
intmenu()
{
intchoix=0;

while(choix<1||choix>4)
{
printf("Menu:\n");
printf("1:Pouletdedindeauxescargotsrotisalasaucebearnaise\n");
printf("2:Concombressucresalasaucedemyrtillesenrobeedechocolat\n");
printf("3:Escalopedekangourousaignanteetsageleeauxfraisespoivree\n");
printf("4:LasurpriseduChef(j'ensalived'avance...)\n");
printf("Votrechoix?");
scanf("%d",&choix);
}

returnchoix;
}
intmain(intargc,char*argv[])
{
switch(menu())
{
case1:
printf("Vousavezprislepoulet\n");
break;
case2:
printf("Vousavezprislesconcombres\n");
break;
case3:
printf("Vousavezprisl'escalope\n");
break;
case4:
printf("VousavezprislasurpriseduChef.Vousetesunsacreaventurierdites
donc!\n");
break;
}
https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

11/12

21/12/2015

Lesfonctions

return0;
}

J'enaiprofitpouramliorerlemenu(parrapportcequ'onfaisaithabituellement):la
fonction menu affichenouveaulemenutantquel'utilisateurn'apasentrunnombrecomprisentre
1et4.Commea,aucunrisquequelafonctionrenvoieunnombrequinefigurepasaumenu!
Dansle main ,vousavezvuqu'onfaitun switch(menu()) .Unefoisquelafonction menu() est
termine,ellerenvoielechoixdel'utilisateurdirectementdansle switch .C'estunemthoderapide
etpratique.
vousdejouer!Lecodeestencoreamliorable:onpourraitafficherunmessaged'erreursi
l'utilisateurentreunmauvaisnombrepluttquedesimplementafficherunenouvellefoislemenu.

Enrsum
Lesfonctionss'appellententreelles.Ainsi,le main peutappelerdesfonctionstoutesprtes
tellesque printf ou scanf ,maisaussidesfonctionsquenousavonscres.
Unefonctionrcupreenentredesvariablesqu'onappelleparamtres.
Elleeffectuecertainesoprationsaveccesparamtrespuisretourneengnralunevaleur
l'aidedel'instruction return .

https://openclassrooms.com/courses/apprenezaprogrammerenc/lesfonctions1

12/12