{"id":4665,"date":"2012-06-21T17:05:32","date_gmt":"2012-06-21T21:05:32","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=4665"},"modified":"2013-08-07T19:47:25","modified_gmt":"2013-08-07T23:47:25","slug":"10-fr","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/10-fr\/","title":{"rendered":"10: def"},"content":{"rendered":"<!-- Please retain this notice and add more notes if you create a new version.<br \/>\nMain French translator: Brice Canvel, brice.canvel@gmail.com<br \/>\nOriginal lesson author: David Pritchard, daveagp@gmail.com<br \/>\nLicense: http:\/\/creativecommons.org\/licenses\/by-nc-sa\/3.0\/<br \/>\nFor the full site, visit http:\/\/cscircles.ca-->\n<p>Dans cette le\u00e7on nous allons vous montrer les id\u00e9es\u00a0les plus importantes en programmation: d\u00e9finir vos propres fonctions ! Les fonctions permettent \u00e0 votre programme d'\u00eatre plus court, mieux organis\u00e9, plus facile \u00e0 lire, plus facile \u00e0\u00a0d\u00e9verminer et plus r\u00e9utilisable. Dans les le\u00e7ons \u00e0 suivre nous allons voir d'autres avantages tels que la r\u00e9cursivit\u00e9.<\/p>\n<h1>D\u00e9finir une Fonction<\/h1>\n<p>Nous allons commencer avec un exemple. Vous rappelez-vous de la fonction\u00a0<code>abs<\/code>\u00a0? Elle prend seulement un argument (un nombre x), et retourne sa valeur absolue (qui devient\u00a0x\u00a0quand\u00a0x\u00a0\u2265 0 et -x quand\u00a0x\u00a0&lt; 0). La fa\u00e7on de d\u00e9finir cette fonction dans Python est :<\/p>\n<pre>def abs(x):     # d\u00e9finit une fonction appel\u00e9e 'abs' avec un argument appel\u00e9 'x'\r\n  if x &gt;= 0:    # le corps de la fonction commence ici\r\n    return x\r\n  else:\r\n    return -x   # le corps de la fonction se termine ici<\/pre>(Cliquez <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=def%20abs%28x%29%3A%20%23D%C3%A9finition%20de%20fonction%0A%20%20if%20x%20%26gt%3B%3D%200%3A%0A%20%20%20%20return%20x%0A%20%20else%3A%20%20%0A%20%20%20%20return%20-x%0A%0A%23%20Le%20programme%20principal%20commence%20ici%0Aprint%28abs%28-5%29%29%0Aprint%28abs%2810%29%29\" target=\"_blank\">ici<\/a> pour voir ce code dans la console.)<\/p>\n<h2>Les Deux Parties de la D\u00e9finition d'une Fonction<\/h2>\n<p>La premi\u00e8re ligne dans une d\u00e9finition de fonction sp\u00e9cifie le nom de la fonction et le(s) argument(s) de la fonction. Cela devrait ressembler \u00e0 ceci :<\/p>\n<p style=\"text-align: center;\"><code>def \u00abnom-fonction\u00bb(\u00abliste-argument\u00bb):<\/code><\/p>\n<p>Dans l'exemple ci-dessus,\u00a0<code>abs<\/code>\u00a0\u00e9tait le nom de la\u00a0fonction et\u00a0la liste d'argument \u00e9tait <code>x<\/code>.\u00a0C'est appel\u00e9 la liste d'argument parce qu'il peut avoir plusieurs arguments, par exemple <code>x<\/code>, <code>y<\/code>,\u00a0<code>z<\/code>. Il est \u00e9galement possible de ne pas avoir d'argument, c.-\u00e0-d. une\u00a0liste vide. <strong>Les arguments sont des\u00a0entr\u00e9e(s) aux fonctions.<\/strong><\/p>\n<p>Tout ce qu'il y a apr\u00e8s la premi\u00e8re ligne d'une d\u00e9finition d'une fonction devient le corps de la fonction. Le corps est un bloc de code indent\u00e9. Chaque fois que la fonction\u00a0est appel\u00e9e, le corps est ex\u00e9cut\u00e9 avec les arguments\/entr\u00e9es. Finalement, quand nous atteignons cette ligne dans le corps de la fonction,<\/p>\n<pre>return \u00abvaleur\u00bb<\/pre>la fonction termine son ex\u00e9cution \u00a0et retourne\u00a0\u00abvaleur\u00bb\u00a0comme sortie. Le retour\u00a0de valeur est donc la sortie de la fonction. Comme l'exemple\u00a0<code>abs<\/code>\u00a0le montre, le corps peut contenir plusieurs d\u00e9clarations de retour ; mais seulement celle qui sera ex\u00e9cut\u00e9e en premier aura un effet, car la fonction arr\u00eate son ex\u00e9cution par la suite.<\/p>\n<h2>Exemple: D\u00e9finir et Appeler une Fonction<\/h2>\n<p>Le programme qui suit contient la d\u00e9finition d'une fonction et certaines autres d\u00e9clarations qui\u00a0sont ex\u00e9cut\u00e9es apr\u00e8s que la fonction soit d\u00e9finie. <form class=\"pbform\" action=\"#\" id=\"pbform0\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox0'>\n<div class=\"heading\"><span class='type'>Example: <\/span><span class='title'>Fonction carr\u00e9<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 162px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=6 readonly='readonly'  style = 'height : 162px;'  class='pyboxCode RO'>\ndef carr\u00e9(x):    # definition de fonction\n    return x*x    # le corps contient seulement une ligne\n\n# utilisez la fonction nous avons d\u00e9fini\nprint(carr\u00e9(10))        \nprint(carr\u00e9(carr\u00e9(2)))<\/textarea><\/div>\n<div id='pbhistory0' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit0' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(0)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(0,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse0\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"0\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"327c9afccbebd2efbf39ed4fdbba35ac\"\/>\n<div id='pbresults0' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit0\").value = \"Run program\";document.getElementById(\"inputInUse0\").value = \"N\";<\/script>\n<\/p>\n<p>Nous pouvons voir que le nom de la fonction est <code>carr\u00e9<\/code>, qu'il y a seulement un argument <code>x<\/code>\u00a0et que le corps de la fonction consiste seulement en une ligne de retour <code>x*x<\/code>. Puis en dehors de la fonction, on a deux commandes, qui appellent la fonction un total de trois fois.<\/p>\n<ol>\n<li>Quand la premi\u00e8re commande est ex\u00e9cut\u00e9, Python doit \u00e9valuer\u00a0<code>carr\u00e9(10)<\/code>.\u00a0Python compare la liste d'entr\u00e9es (<code>10<\/code>)\u00a0\u00e0 la liste d'argument\u00a0(<code>x<\/code>). Alors, il ex\u00e9cute le corps de la fonction\u00a0<code>return\u00a0x*x<\/code>\u00a0tout en\u00a0se rappelant que\u00a0<code>x<\/code> est \u00e9gal \u00e0 <code>10<\/code>. Ainsi\u00a0<code>x*x<\/code>\u00a0donne <code>100<\/code>, qui est affich\u00e9.<\/li>\n<li>Quand la deuxi\u00e8me commande est ex\u00e9cut\u00e9e, Python doit \u00e9valuer<code> carr\u00e9(carr\u00e9(2)).<\/code> La partie interne de <code>carr\u00e9(2)<\/code>\u00a0est \u00e9valu\u00e9e en premier. Nous rendons temporairement <code>x<\/code> \u00e9gale \u00e0 <code>2<\/code>, et on ex\u00e9cute le corps de la fonction, qui retourne <code>4<\/code>. Puis l'expression ext\u00e9rieure est \u00e9valu\u00e9e; comme\u00a0<code>carr\u00e9(2)<\/code> donne <code>4<\/code>, nous appelons maintenant <code>carr\u00e9(4)<\/code>. Cela retourne <code>16<\/code>, qui est affich\u00e9.<\/li>\n<\/ol>\n<p>Comme d'habitude, vous voudrez peut-\u00eatre voir \u00e0 quoi cela ressemble dans\u00a0<a href=\"http:\/\/cscircles.cemc.uwaterloo.ca\/visualize\">Python3 Visualizer<\/a>.<\/p>\n<h2>Quatre Erreurs les plus Courantes<\/h2>\n<p>Une erreur tr\u00e8s courante que vous pouvez faire en d\u00e9finissant une fonction est d'oublier la d\u00e9claration de retour.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform1\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox1'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Erreur 1:\u00a0Oublier le <code>return<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode1' id='usercode1'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ndef carr\u00e9(x):\n x*x\nprint(carr\u00e9(10))<\/textarea><\/div>\n<div id='pbhistory1' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit1' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(1)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(1,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse1\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"1\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"e53a336dc60f40e48188f840cd4e33e3\"\/>\n<div id='pbresults1' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit1\").value = \"Run program\";document.getElementById(\"inputInUse1\").value = \"N\";<\/script>\n<\/p>\n<p>Comme vous pouvez voir, s'il n'y a pas d\u00e9claration de <code>return<\/code>\u00a0dans le corps, la fonction donne<code> None<\/code> par d\u00e9faut. Alors, si vous \u00e9chouez \u00e0 un exercice, parce qu'une fonction retourne <code>None<\/code>, le probl\u00e8me est souvent que quelques entr\u00e9es de fonction ne provoquent pas l'ex\u00e9cution d'une instruction <code>return<\/code>.<\/p>\n<p><table class='pywarn'><tr><td class='pywarnleft'><img src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/warning.png'\/><\/td><td class='pywarnright'><span> Vous pouvez intentionnellement omettre une d\u00e9claration de <code>return<\/code>. Cela a du sens seulement si votre fonction a un effet secondaire autre que la valeur <code>return<\/code>, par exemple afficher une sortie de fonction: <form class=\"pbform\" action=\"#\" id=\"pbform2\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox2'>\n<div class=\"heading\"><span class='type'>Example: <\/span><span class='title'>Un effet secondaire et aucune instruction return<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 136px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=5 readonly='readonly'  style = 'height : 136px;'  class='pyboxCode RO'>\ndef printR\u00e9p\u00e9t\u00e9e(cha\u00eene, r\u00e9p\u00e9titions):   # pas de return ici\n  for i in range(0, r\u00e9p\u00e9titions):\n    print(cha\u00eene)\n\nprintR\u00e9p\u00e9t\u00e9e('voil\u00e0', 3)<\/textarea><\/div>\n<div id='pbhistory2' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit2' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(2)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(2,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse2\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"2\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"a0b391b07e4661f6e89883809691c378\"\/>\n<div id='pbresults2' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit2\").value = \"Run program\";document.getElementById(\"inputInUse2\").value = \"N\";<\/script>\n  <\/span><\/td><\/table><\/p>\n<p>Une autre erreur tr\u00e8s courante est d'oublier d'indenter le code, r\u00e9sultant en une erreur de type\u00a0<code>IndentationError<\/code>.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform3\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox3'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Erreur 2:\u00a0Oublier d'indenter<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode3' id='usercode3'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ndef carr\u00e9(x):\nreturn x*x\nprint(carr\u00e9(10))<\/textarea><\/div>\n<div id='pbhistory3' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit3' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(3)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(3,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse3\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"3\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"0845f7e841bbaf127d0b3b6ab7241c20\"\/>\n<div id='pbresults3' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit3\").value = \"Run program\";document.getElementById(\"inputInUse3\").value = \"N\";<\/script>\n<\/p>\n<p>Comme nous avons vu dans le\u00e7on 2, un appel avec trop ou trop\u00a0peu d'arguments provoque\u00a0une erreur.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform4\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox4'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Erreur 3:\u00a0appel avec trop d'arguments<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode4' id='usercode4'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ndef carr\u00e9(x):\n return x*x\nprint(carr\u00e9(7, 11))<\/textarea><\/div>\n<div id='pbhistory4' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit4' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(4)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(4,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse4\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"4\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"57ba1b5c195900647857429a69f29b81\"\/>\n<div id='pbresults4' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit4\").value = \"Run program\";document.getElementById(\"inputInUse4\").value = \"N\";<\/script>\n<\/p>\n<p>Finalement, si vous faites une erreur dans le nom quand vous d\u00e9finissez\u00a0ou vous\u00a0appelez la fonction, vous obtiendrez une erreur qui indique que la fonction est ind\u00e9finie.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform5\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox5'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Erreur 4:\u00a0nom incorrect<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode5' id='usercode5'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ndef carr\u00e9(x):\n return x*x\nprint(carre(10))<\/textarea><\/div>\n<div id='pbhistory5' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit5' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(5)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(5,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse5\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"5\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"a0006d920e195f518c403341ca819bef\"\/>\n<div id='pbresults5' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit5\").value = \"Run program\";document.getElementById(\"inputInUse5\").value = \"N\";<\/script>\n<\/p>\n<h2>Essayez Vous-M\u00eame<\/h2>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform6\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox6'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>Cubism<\/span><\/div>D\u00e9finir une fonction <code>cube(n)<\/code>, qui prend une seul nombre\u00a0<code>n<\/code>\u00a0comme entr\u00e9e et donne comme sortie le cube <code>n<\/code>\u00d7<code>n<\/code>\u00d7<code>n<\/code>.<div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode6' id='usercode6'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory6' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput6\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit6' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch6\" value=\"Input Switch\" onclick=\"pbInputSwitch(6,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(6)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(6,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect6' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(6,'10.cube')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(6);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse6\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"6\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"72d514655d307489b0eb30eec6d6852e\"\/>\n<div id='pbresults6' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(6);});pbInputSwitch(6,\"Y\");<\/script>\n<\/p>\n<h2>Deux ou Plusieurs Arguments<img decoding=\"async\" class=\"alignright\" src=\"..\/wp-content\/lesson_files\/img\/10\/area-triangle-fr.png\"\/><\/h2>\n<p>Les fonctions ci-dessus ne prenait qu'un un argument,\u00a0mais\u00a0une fonction\u00a0peut \u00eatre con\u00e7ue pour\u00a0prendre plusieurs arguments. Par exemple, vous\u00a0avez appel\u00e9 <code>input<\/code><code>()<\/code> avec 0 arguments (et vous allez d\u00e9finir une fonction avec 0 arguments dans le\u00e7on 15A).<\/p>\n<p>Voici un exemple sur la g\u00e9om\u00e9trie\u00a0avec deux arguments. Supposez que nous ayons besoin d'une fonction pour calculer l'aire d'une triangle, compte tenu a\u00a0longueur\u00a0de sa base base et sa hauteur. La formule pour calculer cette aire est<\/p>\n<p style=\"text-align: center;\">aire = base \u00d7 hauteur \/ 2<\/p>\n<p>En Python, nous pouvons d\u00e9finir un fonction <code>aireTriangle<\/code>\u00a0comme suit :<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform7\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox7'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Une fonction avec deux arguments<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode7' id='usercode7'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\ndef aireTriangle(base, hauteur):\n  return base*hauteur\/2\nprint(aireTriangle(3, 5))\nprint(aireTriangle(4, 2))<\/textarea><\/div>\n<div id='pbhistory7' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit7' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(7)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(7,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse7\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"7\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"1630d0d818bad77e6fa0d512e56a1c7a\"\/>\n<div id='pbresults7' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit7\").value = \"Run program\";document.getElementById(\"inputInUse7\").value = \"N\";<\/script>\n<\/p>\n<p><img decoding=\"async\" class=\"alignright\" src=\"..\/wp-content\/lesson_files\/img\/10\/peri-rect-fr.png\" \/><\/p>\n<p>Comme vous pouvez le voir, le seul changement est\u00a0que nous avons\u00a0remplac\u00e9\u00a0<code>def\u00a0\u00abnom-fonction\u00bb(\u00abargument1\u00bb)<\/code> avec <code>def\u00a0\u00abnom-fonction\u00bb(\u00abargument1\u00bb,\u00a0\u00abargument2\u00bb)<\/code>.<\/p>\n<p>Dans ce dernier exercice nous vous demandons d'\u00e9crire votre propre fonction avec deux arguments, pour calculer le p\u00e9rim\u00e8tre d'une rectangle. (Le p\u00e9rim\u00e8tre est la longueur total de tous les c\u00f4t\u00e9s.) Dans une rectangle avec une largeur et hauteur donn\u00e9e, la p\u00e9rim\u00e8tre\u00a0est donn\u00e9\u00a0par la formule qui suit :<\/p>\n<p style=\"text-align: center;\">p\u00e9rim\u00e8tre = largeur + hauteur + largeur + hauteur<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform8\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox8'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>Rectangle<\/span><\/div>D\u00e9finissez une fonction\u00a0<code>perimetreRectangle(largeur, hauteur)<\/code>, qui calcule le p\u00e9rim\u00e8tre d'un rectangle. <div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode8' id='usercode8'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory8' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput8\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit8' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch8\" value=\"Input Switch\" onclick=\"pbInputSwitch(8,'Y')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(8)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(8,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect8' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(8,'10.rectangle')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(8);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse8\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"8\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"fc6b2fcba6a4e412bac9477c5d6b0f8a\"\/>\n<div id='pbresults8' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(8);});pbInputSwitch(8,\"Y\");<\/script>\n<\/p>\n<h3>Fonctions peuvent appeler des fonctions<\/h3>\n<p>Les fonctions sont les \u00e9l\u00e9ments constitutifs de grands programmes\u00a0bien b\u00e2tis: vous pouvez faire la m\u00eame t\u00e2che deux fois sans l'\u00e9crire deux fois et vous pouvez r\u00e9utiliser les solutions aux t\u00e2ches communes. Voici un exemple de construction fonction utilis\u00e9e dans une autre fonction.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform9\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox9'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div><em>Pouvez-vous deviner ce que fait ce programme avant de l'exc\u00e9cuter?<\/em><table class='pywarn'><tr><td class='pywarnleft'><img src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/warning.png'\/><\/td><td class='pywarnright'><span> Souvenez-vous que la multiplication des cha\u00eenes avec des entiers \u00e0 la le\u00e7on 4 signifiait que l'on r\u00e9p\u00e9tait la cha\u00eene un certain nombre de fois. Par exemple, <code>\"tar\"*2<\/code> is <code>\"tartar\"<\/code>. <\/span><\/td><\/table><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 318px;'><textarea wrap='off' name='usercode9' id='usercode9'  cols=10 rows=12 readonly='readonly'  style = 'height : 318px;'  class='pyboxCode RO'>\ndef dedans(chaine, largeur):\n  return chaine + \" \" * (largeur - len(chaine))\n\ndef dehors(chaine1, chaine2):\n  z = max(len(chaine1), len(chaine2))\n  print(\"*\" * (z + 4))\n  print(\"* \" + dedans(chaine1, z) + \" *\")\n  print(\"* \" + dedans(chaine2, z) + \" *\")\n  print(\"*\" * (z + 4))\n\ndehors(\"Cette boite\", \"a des c\u00f4t\u00e9s droits\")\ndehors(\"Boites adieu!\", \"(not False) est \" + str(not False))<\/textarea><\/div>\n<div id='pbhistory9' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit9' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(9)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(9,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse9\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"9\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"ed28114a6c1d8926b73e8948786a015e\"\/>\n<div id='pbresults9' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit9\").value = \"Run program\";document.getElementById(\"inputInUse9\").value = \"N\";<\/script>\n<\/p>\n<p>Vous \u00eates maintenant pr\u00eat pour la prochaine le\u00e7on !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans cette le\u00e7on nous allons vous montrer les id\u00e9es\u00a0les plus importantes en programmation: d\u00e9finir vos propres fonctions ! Les fonctions permettent \u00e0 votre programme d'\u00eatre plus court, mieux organis\u00e9, plus facile \u00e0 lire, plus facile \u00e0\u00a0d\u00e9verminer et plus r\u00e9utilisable. Dans &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/10-fr\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4665","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/comments?post=4665"}],"version-history":[{"count":37,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4665\/revisions"}],"predecessor-version":[{"id":7466,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4665\/revisions\/7466"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=4665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}