{"cells":[{"metadata":{},"cell_type":"markdown","source":"<div class = \"alert alert-danger\"> \n \nAttention: **veillez à bien sauvegarder votre travail** dans le bon dossier du disque réseau (dossier document) avec le bon nom (et l'extension *.ipynb*), **sinon toutes les modifications seront perdues!**\n\nPour reprendre votre travail, il suffit d'ouvrir le fichier .ipynb en cliquant sur *Fichier ouvrir*\n</div>"},{"metadata":{},"cell_type":"markdown","source":"# Complément sur les cercles\n\n**Rappel** :\n\n- la fonction `circle(r)` dessine un cercle de rayon `r`, vers la gauche,\n- la fonction `circle(-r)` dessine un cercle de rayon `r`, vers la droite,\n- la fonction `circle(r, a)` dessine un arc de cercle de rayon `r` avec un angle `a`.\n\n"},{"metadata":{},"cell_type":"markdown","source":"## Fonction `circle()`\n\nLa fonction `circle(r)` dessine un cercle de rayon `r`.\nCe cercle est dessiné :\n\n- vers la gauche si `r` est positif,\n- vers la droite si `r` est négatif.\n\n"},{"metadata":{},"cell_type":"markdown","source":"**Rappel** de quelques fonction Turtle avec des exemples qui pourront vous servir\n\n| Fonction |Exemple|Commentaire|\n|:-------- |:------|:----------|\n|forward(x)|forward(150)|Trace un trait de 150 points|\n|backward(x)|backward(150)|Trace un trait “à reculons” de 150 points|\n|left(n)|left(60)|Tourne sur place la tortue de 60° à gauche|\n|right(n)|right(60)|Tourne sur place la tortue de 60° à droite|\n|width(x)|width(5)|Change l’épaisseur à 5 points|\n|color(\"c\")|color(\"yellow\")|Change la couleur du trait (mais aucun trait n’est tracé à ce moment). Notez les guillemets !|\n|penup()|penup()|Lève la tortue (permet de se déplacer sans dessiner)|\n|pendown()|pendown()|Baisse le stylo|"},{"metadata":{"trusted":true},"cell_type":"code","source":"from turtle import *\n\nleft(90)\ncircle(20)\ncircle(40)\ncircle(60)\ncircle(80)\n\ncircle(-20)\ncircle(-40)\ncircle(-60)\ncircle(-80)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Fleur\n\nDessinons des cercles dans une boucle, et tournons chaque fois.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 1 </h3>Modifiez le nombre de répétitions et l'angle de rotation.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(6):\n circle(50)\n left(60)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Arc de cercle\n\nCette fonction peut avoir un deuxième paramètre sous la forme `circle(r, angle)`,\noù `angle` représente l'angle de l'arc de cercle dessiné.\nPar défaut, l'angle est de 360°, donc un cercle entier.\n\nVoici un exemple qui utilise deux demi-cercles de 180°.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 2 </h3>\n\nDessinez un bonhomme de neige et utilisez `dot()` pour les yeux.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"from turtle import *\n\nforward(100)\ncircle(40, 180)\nforward(50)\ncircle(-30)\nforward(50)\ncircle(40, 180)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Carré arrondi\n\nAvec la fonction `circle()`, il est maintenant possible de dessiner un carré dont les coins sont arrondis.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 3 </h3>Dessinez maintenant un rectangle avec des coins arrondis.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(4):\n forward(100)\n circle(20, 90)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Pac-Man\n\nPac-Man est un jeu vidéo créé par l’entreprise japonaise Namco, sorti au Japon en 1980. Le jeu consiste à déplacer Pac-Man, un personnage qui ressemble à un diagramme circulaire à l’intérieur d’un labyrinthe, afin de lui faire manger toutes les pac-gommes qui s’y trouvent en évitant d’être touchées par des fantômes.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 4 </h3>Ajoutez l'œil de Pac-Man, et les points qu'il mange.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"from turtle import *\n\nfillcolor('yellow')\nbegin_fill()\nleft(30)\nforward(100)\nleft(90)\ncircle(100, 300)\nleft(90)\nforward(100)\nend_fill()\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Cœur\n\nLe cœur est le symbole de l'amour : on donne de façon métaphorique son cœur à la personne que l'on aime pour lui signifier qu'on lui confie sa vie.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 5 </h3>Coloriez le cœur en rouge, ajoutez une flèche.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"from turtle import *\nr = 50\n\nleft(90)\ncircle(r, 225)\nforward(2.4*r)\nleft(90)\nforward(2.4*r)\ncircle(r, 225)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Infini — ∞\n\nLe mot **infini** (du latin in-, préfixe négatif, et finitus, *limité*) est un adjectif servant à qualifier quelque chose qui n'a pas de limite en nombre ou en taille. L'infini est représenté par le symbole ∞. Nous allons le dessiner.\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 6 </h3>Augmentez un des rayons à `2*r` et ajustez la longueur des segments droits.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"from turtle import *\n\nright(45)\nforward(50)\ncircle(50, 270) # aumentez le rayon à 2*r\nforward(2*50)\ncircle(-50, 270)\nforward(50)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Bretzel - ⌘\n\nLe pictogramme ⌘ (Unicode 2318), parfois appelé *Gordon loop* ou *bretzel*, a été dessiné par Susan Kare lors de la création du premier Macintosh pour sa touche de commande. Il sert de préfixe à d'autres touches pour construire des raccourcis tels que :\n\n- ⌘-X pour couper\n- ⌘-C pour copier\n- ⌘-V pour coller\n\n"},{"metadata":{},"cell_type":"markdown","source":"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 7 </h3>Modifiez le bretzel pour avoir 3 ou 4 boucles.\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"from turtle import *\n\nfor _ in range(4):\n circle(40, 270)\n forward(3*40)\n\ndone()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"\n \n\n"},{"metadata":{},"cell_type":"markdown","source":"---\n\n#### Remarque générale\n\nCe document est une adaptation d'un ressource pédagogique tiré du catalogue modulo https://modulo-info.ch/. Il est sous license Creative Commons [BY-NC-SA](https://creativecommons.org/licenses/?lang=fr)\n\n\n "}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"}},"nbformat":4,"nbformat_minor":2}
"cells": [
\ No newline at end of file
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class = \"alert alert-danger\"> \n",
" \n",
"Attention: **veillez à bien sauvegarder votre travail** dans le bon dossier du disque réseau (dossier document) avec le bon nom (et l'extension *.ipynb*), **sinon toutes les modifications seront perdues!**\n",
"\n",
"Pour reprendre votre travail, il suffit d'ouvrir le fichier .ipynb en cliquant sur *Fichier ouvrir*\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Rappel de quelques fonction de Turtle avec des exemples qui pourront vous servir\n",
"\n",
"| Fonction |Exemple|Commentaire|\n",
"|:-------- |:------|:----------|\n",
"|forward(x)|forward(150)|Trace un trait de 150 points|\n",
"|backward(x)|backward(150)|Trace un trait “à reculons” de 150 points|\n",
"|left(n)|left(60)|Tourne sur place la tortue de 60° à gauche|\n",
"|right(n)|right(60)|Tourne sur place la tortue de 60° à droite|\n",
"|width(x)|width(5)|Change l’épaisseur à 5 points|\n",
"|color(\"c\")|color(\"yellow\")|Change la couleur du trait (mais aucun trait n’est tracé à ce moment). Notez les guillemets !|\n",
"|penup()|penup()|Lève la tortue (permet de se déplacer sans dessiner)|\n",
"|pendown()|pendown()|Baisse le stylo|"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2. Répéter - `for`\n",
"\n",
"Dans ce chapitre, nous découvrons comment utiliser une boucle `for` pour répéter un bloc d'instructions un certain nombre de fois. Nous allons voir que :\n",
"\n",
"* la boucle `for` permet de répéter des instructions,\n",
"* la structure `for _ in range(n):` permet de répéter un bloc un nombre `n` fois,\n",
"* les instructions, qui sont répétées, sont celles qui suivent le `:` et qui sont indentées (décalées à droite). En effet, le langage python, n'a pas de end for pour indiquer la fin de la boucle. Le langage utilise l'indentation pour signifier qu'une suite d'instruction fait partie de la boucle.\n",
"Pour distinguer les instructions qui seront répétées de celles qui ne le seront pas, on <b>indente</b> le code, c'est-à-dire que toutes les instructions qui suivent le `for` qui commencent par un espacement seront répétées le nombre de fois explicité dans le `range`. Après les répétitions le programme exécutera la permière instruction qui n'est pas indentée.\n",
"\n",
"NB: Vous être libre de choisir l'espace d'indentation mais soyez rigoureux avec votre choix et garder la même valeur pour tout votre programme. Nous utilisons en général un espace de 4 caractères ou la <b>touche Tabulation</b> pour rendre les codes plus lisibles.\n",
"Cette erreur survient lorsque vous écrivez mal un mot-clé, ou si vous oubliez une ponctuation. Dans ce cas, le mot-clé mal écrit n'est pas reconnu et il n'est pas colorié correctement dans votre code.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 11 </h3>Corrigez les trois erreurs de syntaxe et remarquez les éventuelles différences de stylisation.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fro turtle import *\n",
"\n",
"fore i in range(3)\n",
" forward(100)\n",
" left(120)\n",
"\n",
"done()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### <font color='red'>NameError</font>\n",
"\n",
"Cette erreur survient lorsque vous écrivez mal le nom d'une variable ou fonction.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 12 </h3>Corrigez les trois erreurs de nom.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from turtle import *\n",
"\n",
"for _ in range(n):\n",
" forwarde(100)\n",
" lefft(120)\n",
"\n",
"done()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### <font color='red'>TypeError</font>\n",
"\n",
"Cette erreur survient lorsque vous ne mettez pas le nombre d'arguments corrects pour une fonction.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 13 </h3>Corrigez les trois erreurs de type.\n",
"Utiliser votre identifiant EEL et le mot de passe *Sismondi2024* pour faire les exercices de la **série B** de la plateforme [AlgoPython](https://www.algopython.fr/login). [](https://www.algopython.fr/login)\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"#### Remarque générale\n",
"\n",
"Ce document est une adaptation d'un ressource pédagogique tiré du catalogue modulo https://modulo-info.ch/. Il est sous license Creative Commons [BY-NC-SA](https://creativecommons.org/licenses/?lang=fr)\n",