{"id":4658,"date":"2012-06-21T17:02:42","date_gmt":"2012-06-21T21:02:42","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=4658"},"modified":"2016-02-19T01:39:42","modified_gmt":"2016-02-19T06:39:42","slug":"7c-fr","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/7c-fr\/","title":{"rendered":"7C: Boucles"},"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><em><em>La le\u00e7on 7 est compos\u00e9e de trois parties, A, B, C qui peuvent \u00eatre compl\u00e9t\u00e9es dans n'importe quel ordre.<\/em><\/em><\/p>\n<p>Jusqu'\u00e0 pr\u00e9sent, nous avons vu les commandes de base de la programmation (e.g. attribuer des valeurs, \u00e9crire \u00e0 l'\u00e9cran) ainsi que les instructions <code>if<\/code>. Dans cette le\u00e7on, nous allons introduire les <strong>boucles<\/strong>\u00a0(aussi appel\u00e9es <strong>r\u00e9p\u00e9titions<\/strong> ou <strong>it\u00e9rations<\/strong>): c'est une mani\u00e8re de faire faire \u00e0 un ordinateur la m\u00eame chose (ou des choses similaires) encore et encore. Par exemple, v\u00e9rifier l'orthographe de <em>chaque<\/em> mot dans un document pourrait \u00eatre impl\u00e9ment\u00e9 avec une boucle. Nous allons d\u00e9crire deux types de boucles: les boucles\u00a0<code>while<\/code>\u00a0et les boucles\u00a0<code>for<\/code>.<\/p>\n<h2>Boucles <code>while<\/code><\/h2>\n<p>Une instruction\u00a0<code>while<\/code>\u00a0r\u00e9p\u00e8te une section de code encore et encore tant qu'une condition donn\u00e9es est vraie (\"true\"). Voici un exemple:<\/p>\n<p><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'>Compte \u00e0 Rebours<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 136px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=5 readonly='readonly'  style = 'height : 136px;'  class='pyboxCode RO'>\ntempsRestant = 5\nwhile tempsRestant &gt; 0:           # condition\n  print(tempsRestant)         # body\n  tempsRestant = tempsRestant-1   # body\nprint('D\u00e9collage!')           # ca ne fait pas partie de la boucle<\/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=\"fb576b217cc0598e8476f9e1f703aa2a\"\/>\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>Voici la structure g\u00e9n\u00e9rale:<\/p>\n<ul>\n<li>La premi\u00e8re ligne est une \u00a0<code>while \u00abcondition\u00bb:<\/code> o\u00f9 \u00abcondition\u00bb est une expression qui retourne\u00a0<code>True<\/code> ou\u00a0<code>False<\/code>\u00a0(une expression Bool\u00e9enne, comme pour l'instruction\u00a0<code>if<\/code>).<\/li>\n<li>Ensuite, on utilise un block indent\u00e9 (comme pour une instruction\u00a0<code>if<\/code>) qu contient des instructions que l'on veut r\u00e9p\u00e9ter encore et encore. Cela s'appelle le <em>corps<\/em> de la boucle.<\/li>\n<li>Quand vous ex\u00e9cutez le programme, les \u00e9tapes suivantes sont r\u00e9p\u00e9t\u00e9es:\n<ul>\n<li>La condition est test\u00e9e; si la condition est\u00a0<code>True<\/code>\u00a0alors le corps de la boucle est ex\u00e9cut\u00e9 et ensuite nous r\u00e9p\u00e9tons depuis le haut; quand la condition est \u00e9valu\u00e9e \u00e0\u00a0<code>False<\/code>, la boucle s'arr\u00eate.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform1\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox1'>\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'>Compte \u00e0 Rebour \u00e0 l'Envers<\/span><\/div>Modifiez l'exemple ci-dessus pour obtenir un programme qui compte de mani\u00e8re croissante de <strong>1<\/strong> \u00e0 <strong>10<\/strong> et qui \u00e9crit \u00e0 la fin:\u00a0<code>D\u00e9collage!<\/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='usercode1' id='usercode1'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory1' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput1\">You may enter input for the program in the box 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='submit1' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch1\" value=\"Input Switch\" onclick=\"pbInputSwitch(1,'N')\" ><\/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><select id='pbSelect1' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(1,'7c.countup')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(1);\" >Help<\/option>\n<\/select><\/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=\"7df73cce88edac74df2ab7c93ce950e6\"\/>\n<div id='pbresults1' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(1);});pbInputSwitch(1,\"N\");<\/script>\n<\/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> Avec les boucles, il est facile d'\u00e9crire un programme qui s'ex\u00e9cute infiniement en <em>boucle infinie<\/em>. <form class=\"pbform\" action=\"#\" id=\"pbform2\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox2'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Boucle infinie<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nwhile True:\n x=1<\/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=\"7a48ca21c722ec9b36719434e8bb9f57\"\/>\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 Vous obtenez l'erreur \"Time Limit Exceeded\" (\"Limite de Temps Exc\u00e9d\u00e9e\") car le server web CS\u00a0Circles limite le temps d'ex\u00e9cution d'un programme; apr\u00e8s 1 seconde, le programme est stopp\u00e9. Si vous\u00a0<a href=\"\/python-chez-vous\/\">ex\u00e9cutez le programme chez vous<\/a>, il ne s'arr\u00eatera jamais (jusqu'\u00e0 ce que vous l'arr\u00eatiez vous-m\u00eame).\u00a0 <\/span><\/td><\/table><\/p>\n<h2>Boucles <code>for<\/code><\/h2>\n<p>Il y a un autre type de boucle en Python appel\u00e9 boucle\u00a0<code>for<\/code>. Dans beaucoup de cas, on peut utiliser n'importe laquelle des deux boucles (<code>for<\/code>\/<code>while<\/code>) mais l'utilisation de l'une peut \u00eatre plus simple que l'autre et il est donc n\u00e9cessaire de savoir utiliser les deux. Une boucle\u00a0<code>for<\/code>\u00a0est construite pour facilement parcourir un intervalle de nombre (ou, comme nous le verrons dans une prochaine le\u00e7on, n'importe quelle liste de donn\u00e9es).<\/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>Exemple de boucle\u00a0<code>for<\/code>: compter en ordre croissant<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode3' id='usercode3'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nfor compteur in range(10, 15):\n  print(\"La valeur du compteur est\", compteur)<\/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=\"4c53b7badad22b16d269ea4c9503fc21\"\/>\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>La structure g\u00e9n\u00e9rale pour une boucle num\u00e9rique\u00a0<code>for<\/code> est<\/p>\n<pre>for \u00abnomDeVariable\u00bb in range(\u00abpremiereValeur\u00bb, \u00abderniereValeur\u00bb):\r\n  \u00abBlock indent\u00e9 de commandes appel\u00e9 le corps de la boucle\u00bb<\/pre>Comme d'habitude, le block du corps de la boucle peut \u00eatre long de plusieurs lignes, du moment que toutes ces lignes soient indent\u00e9es de la m\u00eame fa\u00e7on. Pour commencer, le corps de la boucle est ex\u00e9cut\u00e9 avec <code>nomDeVariable<\/code> ayant pour valeur <code>premiereValeur<\/code>. Puis il se r\u00e9p\u00e8te avec\u00a0<code>nomDeVariable<\/code>\u00a0ayant pour valeur\u00a0<code>premiereValeur+1<\/code>, et encore avec <code>premiereValeur+2<\/code>, etc. Ce processus continue jusqu'\u00e0 ce que\u00a0\u00a0<code>nomDeVariable<\/code>\u00a0est comme valeur <code>derniereValeur-1<\/code> et ensuite la boucle s'arr\u00eate.<\/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> La boucle se termine avec <code>derniereValeur-1<\/code> et pas <code>derniereValeur<\/code>!<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> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode4' id='usercode4'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nfor i in range(1, 3):\n print(i)             # 3 n'est pas affich\u00e9!<\/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=\"02e0da1fee5b2219de6d4232f134bfff\"\/>\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 <\/span><\/td><\/table><\/p>\n<p>Voici un exemple avec une boucle\u00a0<code>for<\/code>\u00a0\u00e0 l'int\u00e9rieur d'une autre boucle\u00a0<code>for<\/code>.<\/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='type'>Example: <\/span><span class='title'>Un carr\u00e9<\/span><\/div>Ce programme imprime un carr\u00e9 de 5 x 5 de 1s. <br\/>REMARQUE: Lorsque l'on multiplie un nombre X par dix et en ajouter un, nous sommes essentiellement mettre 1 chiffre suppl\u00e9mentaire \u00e0 la fin de X.\u00a0Par exemple, (1867*10)+1=18671.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 136px;'><textarea wrap='off' name='usercode5' id='usercode5'  cols=10 rows=5 readonly='readonly'  style = 'height : 136px;'  class='pyboxCode RO'>\nfor i in range(0, 5):\n  X = 0\n  for j in range(0, 5):\n    X = (X*10)+1\n  print(X)<\/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=\"dbe9a001b8f80fc7ea5a3ceb7e5bd503\"\/>\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<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'>Un Triangle<\/span><\/div>Modifiez le programme pr\u00e9c\u00e9dent de deux mani\u00e8res. Tout d'abord, au lieu d'un carr\u00e9, faites le afficher un triangle: \u25e4. Ensuite, au lieu d'avoir 5 lignes, vous lirez en entr\u00e9e la taille d\u00e9sir\u00e9e. Par exemple, si l'input est <code>3<\/code>, vous obtiendrez<\/p>\n<pre>111\r\n11\r\n1<\/pre><a class=\"hintlink\"  id=\"hintlink7\">Cliquez ici pour une astuce.<\/a>\u00a0<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'>\nn=int(input())\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\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<input type='hidden' id='defaultCode6' value='n=int(input())\\n'><\/input>\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,'N')\" ><\/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,'N')\" ><\/td>\n<\/tr><\/table><select id='pbSelect6' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(6,'7c.triangle')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(6,descape($('#defaultCode6').val()))\" >Reset code to default<\/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=\"5a1dbcbdade74ba2125849db7f4eeead\"\/>\n<div id='pbresults6' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(6);});pbInputSwitch(6,\"N\");<\/script>\n<\/p>\n<h2>Les instructions\u00a0<code>break<\/code> et\u00a0<code>continue<\/code><\/h2>\n<p>L'instruction\u00a0<code>break<\/code>\u00a0est comme une sortie de secours pour une boucle\u00a0<code>while<\/code>\u00a0ou une boucle\u00a0loop: <code>break<\/code>\u00a0g\u00e9n\u00e8re un saut imm\u00e9diat \u00e0 la commande qui se trouve apr\u00e8s la fin du corps de la boucle. Voici un exemple qui utilise\u00a0<code>break<\/code>: il lit toutes les lignes d'entr\u00e9es jusqu'\u00e0 ce que l'une d'elle dise\u00a0<code>\"FIN\"<\/code>.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform8\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox8'>\n<div class=\"heading\"><span class='type'>Example: <\/span><span class='title'>Boucler \u00e0 travers toutes les lignes d'entr\u00e9es<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 188px;'><textarea wrap='off' name='usercode8' id='usercode8'  cols=10 rows=7 readonly='readonly'  style = 'height : 188px;'  class='pyboxCode RO'>\ncompteur = 0\nwhile True:\n  ligne = input()\n  if ligne == 'FIN':\n    break\n  compteur = compteur+1\n  print('ligne', compteur, '=', ligne)<\/textarea><\/div>\n<div id='pbhistory8' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit8' value=' '\/><\/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,'N')\" ><\/td>\n<\/tr><\/table><\/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=\"982f565f034bedb92e77599d7c148898\"\/>\n<div id='pbresults8' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit8\").value = \"Run program\";document.getElementById(\"inputInUse8\").value = \"N\";<\/script>\n<\/p>\n<p>L'instruction\u00a0<code>continue<\/code> <strong>saute<\/strong> le reste d'une boucle et r\u00e9p\u00e8te le corps de la boucle \u00e0 partir du prochain tour de boucle\u00a0(souvent appel\u00e9 la prochaine \"iteration\").<\/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><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode9' id='usercode9'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nfor n in range(10, 16):  \n  if (n == 13):  # pas de chance\n    continue     # donc on passe\n  print(n)<\/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=\"c5b4bfc9bd75b11230963fede494628f\"\/>\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<h2>Exercices<\/h2>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform10\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox10'>\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'>Square Census<\/span><\/div>Les carr\u00e9s sont des entiers de la forme K \u00d7 K, e.g. 9 est un carr\u00e9 car 3 \u00d7 3 = 9. Ecrivez un programme qui lit en entr\u00e9e un entier\u00a0<em>n<\/em>\u00a0et \u00e9crit tous les carr\u00e9s des nombres inf\u00e9rieurs \u00e0\u00a0<em>n<\/em>, dans l'ordre croissant. Par exemple, si l'entr\u00e9e est 16, la sortie sera<\/p>\n<pre>1\r\n4\r\n9<\/pre><a class=\"hintlink\"  id=\"hintlink11\">Indice<\/a><br \/>\n<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='usercode10' id='usercode10'  cols=10 rows=20   class='pyboxCode RW'>\nn=int(input())\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory10' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput10\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<input type='hidden' id='defaultCode10' value='n=int(input())\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit10' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch10\" value=\"Input Switch\" onclick=\"pbInputSwitch(10,'N')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(10)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(10,'N')\" ><\/td>\n<\/tr><\/table><select id='pbSelect10' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(10,'7c.squares')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(10,descape($('#defaultCode10').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(10);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse10\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"10\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"2d531794dfbb131558c4d9158e699e01\"\/>\n<div id='pbresults10' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(10);});pbInputSwitch(10,\"N\");<\/script>\n<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform12\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox12'>\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'>Code saut\u00e9<\/span><\/div>Compl\u00e9tez l'exercice \"Boucler \u00e0 travers toutes les lignes d'entr\u00e9es\"\u00a0(nous l'avons copi\u00e9 pour vous) en ajoutant une nouvelle fonctionalit\u00e9: toutes les lignes \u00e9gales \u00e0\u00a0<code>SAUTER<\/code>\u00a0ne seront pas \u00e9crite et vous n'incr\u00e9menterez pas le compteur artificiellement. Ex\u00e9cutez le programme pour voir un exemple. <a class=\"hintlink\"  id=\"hintlink13\">Indice<\/a><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='usercode12' id='usercode12'  cols=10 rows=20   class='pyboxCode RW'>\ncounter = 0\nwhile True:\n  ligneIn = input()\n  if ligneIn=='FIN':\n    break\n  counter = counter+1\n  print('ligne', counter, '=', ligneIn)\n<\/textarea><\/div>\n<div id='pbhistory12' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput12\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<input type='hidden' id='defaultCode12' value='counter = 0\\nwhile True:\\n  ligneIn = input()\\n  if ligneIn==\\u0027FIN\\u0027:\\n    break\\n  counter = counter+1\\n  print(\\u0027ligne\\u0027, counter, \\u0027=\\u0027, ligneIn)\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit12' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch12\" value=\"Input Switch\" onclick=\"pbInputSwitch(12,'N')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(12)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(12,'N')\" ><\/td>\n<\/tr><\/table><select id='pbSelect12' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(12,'7c.skip')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(12,descape($('#defaultCode12').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(12);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse12\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"12\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"d3b6bd78c47ccb661f1fdf478c634f1e\"\/>\n<div id='pbresults12' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(12);});pbInputSwitch(12,\"N\");<\/script>\n<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform14\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox14'>\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'>Factorisation<\/span><\/div>Si\u00a0<em>a<\/em> \u00d7 <em>b<\/em> = <em>n<\/em>, nous appelons\u00a0<em>a<\/em> \u00d7 <em>b<\/em>\u00a0une\u00a0<strong>factorisation<\/strong>\u00a0de\u00a0<em>n<\/em>. Dans cet exercice, \u00e9crivez un programme qui prend en entre un entier positif\u00a0<em>n<\/em> et qui \u00e9crit toutes les factorisations de\u00a0<em>n<\/em>; vous utiliserez la pr\u00e9sentation donn\u00e9e par l'exemple suivant avec\u00a0<em>n<\/em>=10.<\/p>\n<pre>1 fois 10 font 10\r\n2 fois 5 font 10\r\n5 fois 2 font 10\r\n10 fois 1 font 10<\/pre><a class=\"hintlink\"  id=\"hintlink15\">Indice<\/a><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='usercode14' id='usercode14'  cols=10 rows=20   class='pyboxCode RW'>\nn = int(input())\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory14' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput14\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<input type='hidden' id='defaultCode14' value='n = int(input())\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit14' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch14\" value=\"Input Switch\" onclick=\"pbInputSwitch(14,'N')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(14)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(14,'N')\" ><\/td>\n<\/tr><\/table><select id='pbSelect14' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(14,'7c.factorize')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(14,descape($('#defaultCode14').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(14);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse14\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"14\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"1f6b08f5d017d5a0eca280daae60d34e\"\/>\n<div id='pbresults14' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(14);});pbInputSwitch(14,\"N\");<\/script>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La le\u00e7on 7 est compos\u00e9e de trois parties, A, B, C qui peuvent \u00eatre compl\u00e9t\u00e9es dans n'importe quel ordre. Jusqu'\u00e0 pr\u00e9sent, nous avons vu les commandes de base de la programmation (e.g. attribuer des valeurs, \u00e9crire \u00e0 l'\u00e9cran) ainsi que &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/7c-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-4658","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4658","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=4658"}],"version-history":[{"count":33,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4658\/revisions"}],"predecessor-version":[{"id":9144,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4658\/revisions\/9144"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=4658"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}