Skip to content
Snippets Groups Projects
Commit f2c8a5cd authored by SCHIESS Mathieu's avatar SCHIESS Mathieu
Browse files

Ajout de vidéo au début des NB 01 et 02

parent 9c77e93e
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
<div class = "alert alert-danger">
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!**
Pour reprendre votre travail, il suffit d'ouvrir le fichier .ipynb en cliquant sur *Fichier ouvrir*
</div>
%% Cell type:markdown id: tags:
# 1. Premier programme, premières instructions
%% Cell type:markdown id: tags:
Dans ce chapitre, nous explorons ce que c’est un programme et nous prenons l’exemple du dessin. Ici, un programme est une séquence d’instructions pour dessiner une image.
<blockquote class="alert alert-info" style="background-color:rgb(220,240,255); margin:10px 10%;">
<p><span style="font-size:1.5em"></span> C'est quoi une programme? la programmation? Exécutez la cellule ci-dessous pour voir une petite introduction sur la notion de boucle</p>
</blockquote>
<iframe width="560" height="315" src="https://www.youtube.com/embed/ZuxcqHVxW5I?si=oEohgGJjaZyMVi_h" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
Allons de l’avant (forward) avec la programmation. Nous allons voir que :
- l’expression `from turtle import *` met à disposition les fonctions de dessin,
- les instructions `forward()`, `backward()` permettent de tracer une ligne,
- les instructions `left()`, `right()` permettent de changer de direction.
- l'instruction `done()` permet de finaliser. Elle lance le tracage de la figure.
%% Cell type:markdown id: tags:
## 1.1 Le module `turtle`
Dans le langage de programmation Python, le module `turtle` (signifiant tortue en anglais) présente une façon sympathique pour faire des dessins. C’est pour cela que nous commençons notre aventure de programmation avec cet animal qui avance tout doucement à son propre rythme.
On s’imagine une tortue qui se déplace sur un canevas et laisse une trace.
Ci-dessous, vous trouvez notre premier programme de trois lignes :
- dans la première ligne, nous importons toutes (`*`) les fonctions du module turtle,
- avec `shape('turtle')`, nous affichons une tortue (au lieu de la flèche),
- avec `forward(150)`, nous faisons avancer la tortue de 150 pixels,
- avec `done()`, nous lançons de tracage de la figure.
%% Cell type:markdown id: tags:
### Exercice 1
Ajoutez d’autres instructions telles que `backward()`, `left()` et `right()` pour faire un dessin.
%% Cell type:markdown id: tags:
<div class="alert alert-block alert-info"><b>A savoir:</b> Cliquez sur le bouton <b>Excécuter</b> pour tester le programme. </div>
%% Cell type:code id: tags:
``` python
from turtle import *
shape('turtle')
forward(150)
done()
```
%% Cell type:markdown id: tags:
### A retenir
La tortue peut se déplacer et dessiner une trace avec les 4 fonctions:
- `forward(d)` pour avancer d'une distance `d` (en pixels)
- `backward(d)` pour reculer
- `left(a)` pour tourner à gauche d'un angle `a` (en degrés)
- `right(a)` pour tourner à droite
%% Cell type:markdown id: tags:
***
## 1.2 Le canevas
Au départ, la tortue se trouve au centre d'une zone rectangulaire appelée _canevas_. Ce rectangle a les propriétés suivantes :
- l'origine (0, 0) se trouve au centre,
- l'axe horizontal x, s'étend de -300 à +300 (à droite),
- l'axe vertical y, s'étend de -200 à +200 (en haut).
### Exercice 2
Compléter le programme ci-dessous pour mener la tortue tout en bas du canevas. Ensuite, ajoutez une diagonale.
%% Cell type:code id: tags:
``` python
from turtle import *
shape('turtle')
forward(300)
backward(600)
forward(300)
left(90)
forward(200)
done()
```
%% Cell type:markdown id: tags:
***
## 1.3 Une séquence
Un programme est une séquence d'instructions. Le bloc de 8 instructions ci-dessous indique comment dessiner un carré. La tortue doit avancer, tourner, avancer, tourner, etc.
### Exercise 3
Modifiez ce code pour en faire un rectangle, au lieu d'un carré.
%% Cell type:code id: tags:
``` python
from turtle import *
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
done()
```
%% Cell type:markdown id: tags:
***
## 1.4 Épaisseur de ligne
La fonction `width(d)` (épaisseur en anglais) permet de définir l'épaisseur de la ligne.
Voici un triangle où chaque côté a une épaisseur différente.
### Exercise 4
Explorez différentes épaisseurs de ligne.
%% Cell type:code id: tags:
``` python
from turtle import *
forward(200)
left(120)
width(5)
forward(200)
left(120)
width(10)
forward(200)
done()
```
%% Cell type:markdown id: tags:
***
## 1.5 Maison avec toit
Nous dessinons une maison et marquons le toit par une ligne plus épaisse.
### Exercise 5
Doublez l'épaisseur du toit. Ensuite, doublez la hauteur de la maison.
%% Cell type:code id: tags:
``` python
from turtle import *
forward(100)
left(90)
forward(60)
left(45)
width(5)
forward(71)
left(90)
forward(71)
width(1)
left(45)
forward(60)
left(90)
done()
```
%% Cell type:markdown id: tags:
***
## 1.6 Raquette de ping-pong
L'épaisseur de ligne est très utile dans le dessin.
## Exercise 6
Transformez la raquette de ping-pong en haltères de musculation.
%% Cell type:code id: tags:
``` python
from turtle import *
width(20)
forward(100)
width(80)
forward(20)
done()
```
%% Cell type:markdown id: tags:
## 1.7 Lunettes de soleil
Voici encore un exemple où, avec un simple changement d'épaisseur, vous obtenez un effet très intéressant.
### Exercise 7
Ajoutez la première branche qui manque.
%% Cell type:code id: tags:
``` python
from turtle import *
width(50)
forward(20)
width(10)
forward(60)
width(50)
forward(20)
width(10)
forward(40)
left(45)
forward(60)
done()
```
%% Cell type:markdown id: tags:
## 1.8 Commentaire
Le symbole `#` indique un commentaire. Sur PC vous pouvez l'insérer avec **Alt Gr+3** ou **opt+3** sur Mac.
Un commentaire permet d'ajouter une explication pour le lecteur humain. Il n'a aucune influence sur le programme. Python ignore tout simplement tout commentaire.
## Exercise 8
Expliquez dans chaque ligne ce que fait l'instruction.
%% Cell type:markdown id: tags:
<div class="alert alert-block alert-info"><b>Astuce :</b> Utiliser les raccourcis <b>Ctrl + c</b> pour copier du texte et <b>Ctrl + v</b> pour coller le texte copié. </div>
%% Cell type:code id: tags:
``` python
from turtle import *
width(50) # mettre l'épaisseur du trait à 50
forward(20) # avancer de 20 pas
width(10)
forward(60)
width(50)
forward(20)
width(10)
forward(40)
left(45)
forward(60)
done()
```
%% Cell type:markdown id: tags:
L'exercice précédent servait à expliciter pour un débutant en programmation la signification des commandes écrites en anglais. Normalement on ne fait pas ça, car un programmeur est censé connaitre la signification des commandes.
Les commentaires servent à expliciter la vraie signification d'une partie du programme.
## Exercise 9
Expliquez cette fois ce que dessine chaque partie du programme (verre, pont, verre, charnière, branche).
%% Cell type:code id: tags:
``` python
from turtle import *
# dessiner le premier verre
width(50)
forward(20)
# dessiner le pont (nez)
width(10)
forward(60)
width(50)
forward(20)
width(10)
forward(40)
left(45)
forward(60)
done()
```
%% Cell type:markdown id: tags:
## 1.9 Équivalence
La tortue possède 4 fonctions de déplacement, mais à strictement parler, on pourrait s'en sortir avec seulement deux fonctions, `forward()` et `left()`, car :
- `backward(d)` est équivalent à `forward(-d)`
- `right(a)` est équivalent à `left(-a)`
Dans le programme ci-dessous, les 4 lignes du deuxième bloc sont équivalentes aux 4 instructions du premier bloc et donnent un résultat identique.
### Exercice 10
Expliquez avec un commentaire ce que font les 2 dernières instructions avant le `done()`.
%% Cell type:code id: tags:
``` python
from turtle import *
forward(160)
left(90)
forward(100)
left(90)
backward(-160) # équivalent à forward(160)
right(-90) # équivalent à left(90)
backward(-100)
right(-90)
done()
```
%% Cell type:markdown id: tags:
## Exercices d'entraînement
%% Cell type:markdown id: tags:
### Exercice 11
Écrivez un programme qui dessine un losange conformément au croquis ci-dessous.
![Image de losange](https://framagit.org/mschiess/1IN_Sismondi/-/raw/main/imgs_chap1/exo_losange.png)
%% Cell type:code id: tags:
``` python
from turtle import *
# à compléter...
done()
```
%% Cell type:markdown id: tags:
### Exercice 12
Dessinez un hexagone régulier dont la longueur des côtés vaut 100 (voir la figure ci-dessous).
%% Cell type:markdown id: tags:
<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxzdmcgYmFzZVByb2ZpbGU9ImZ1bGwiIGhlaWdodD0iMzAwcHgiIHZlcnNpb249IjEuMSIgd2lkdGg9IjMwMHB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOmV2PSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48ZGVmcyAvPjxwb2x5bGluZSBjbGlwLXBhdGg9InVybCgjYm9yZGVyX2NsaXApIiBmaWxsPSJub25lIiBwb2ludHM9IjEwMC41LDIwMC41IDIwMC41LDIwMC41IDI1MC41LDExMy44OTc0NTk2MjE1NTYxNCAyMDAuNTAwMDAwMDAwMDAwMDMsMjcuMjk0OTE5MjQzMTEyMjYgMTAwLjUwMDAwMDAwMDAwMDAzLDI3LjI5NDkxOTI0MzExMjIyIDUwLjUsMTEzLjg5NzQ1OTYyMTU1NjA1IDEwMC40OTk5OTk5OTk5OTk5NCwyMDAuNDk5OTk5OTk5OTk5OTQiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxIiAvPjwvc3ZnPg==" />
%% Cell type:markdown id: tags:
*Exercice tiré du livre **L'informatique simplement** de J. Hromkovic et T. Kohn*
%% Cell type:markdown id: tags:
<div class="alert alert-block alert-info">
<b> Indication</b>
<br>
Pour tracer un hexagone, la tortue doit tourner 6 fois. Comme un tour complet représente 360°, à chaque angle la tortue doit tourné de \( \frac{360}{6}=60 \) degrés.
</div>
%% Cell type:code id: tags:
``` python
from turtle import *
forward(100)
# à compléter...
done()
```
%% Cell type:markdown id: tags:
### Exercice 13
Dessinez une chaise.
%% Cell type:code id: tags:
``` python
from turtle import *
left(90)
forward(100)
# à compléter...
done()
```
%% Cell type:markdown id: tags:
### Exercice 14
Commenter le programme ci-dessous afin d'expliquer le but des différents blocs du code.
%% Cell type:code id: tags:
``` python
from turtle import *
# mettre votre commentaire
forward(200)
left(90)
forward(100)
left(90)
forward(200)
left(90)
forward(100)
left(90)
# mettre votre commentaire
forward(30)
# mettre votre commentaire
forward(30)
left(90)
forward(50)
left(90)
forward(30)
left(90)
forward(50)
left(90)
done()
```
%% Cell type:markdown id: tags:
### Exercice 15 *
Écrivez un programme qui dessine une maison comme dans le schéma ci-dessous. Elle est formée de plusieurs triangles isocèles rectangles. La longueur des côtés du carré de base est de 185.
![Image de maison](https://framagit.org/mschiess/1IN_Sismondi/-/raw/main/imgs_chap1/exo_maison.png)
*Exercice tiré du livre **L'informatique simplement** de J. Hromkovic et T. Kohn*
%% Cell type:markdown id: tags:
<div class="alert alert-block alert-info">
<b> Indication</b>
<br>
pour connaître la longueur du toit et des diagonles, utilisez le théorème de Pythagore.
</div>
%% Cell type:code id: tags:
``` python
from turtle import *
forward(185)
left(90)
# à compléter...
done()
```
%% Cell type:markdown id: tags:
---
#### Remarque générale
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)
![Licence Creative Commons](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)
......
%% Cell type:markdown id: tags:
<div class = "alert alert-danger">
<div style="padding:20px;background-color:papayawhip;" >
<h3 style="color:chocolate"> <i class="fa fa-info" aria-hidden="true"> </i> &nbsp; Remarque introductive &nbsp; <i class="fa fa-info" aria-hidden="true"></h3>
<p> Ce fichier est fait pour être lu sur le site <a href="https://notebook.basthon.fr/"><img src='https://notebook.basthon.fr/assets/efede5218c9087496f16.png' style="border: 0; display:inline; margin: 0 5px; height:30px" alt="Basthon"/></a>. <br>
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!**
Pour reprendre votre travail, il suffit d'ouvrir le fichier .ipynb en cliquant sur *Fichier ouvrir*
</div>
Si vous l'avez ouvert avec un autre programme, comme Jupyter notebook, vous riquez de rencontrer quelques bugs. <br>
Veuillez cliquez sur <a href="https://notebook.basthon.fr/">ce lien</a> et y charger ce fichier à l'aide du bouton "Ouvrir" &nbsp; <i class="fa fa-folder" aria-hidden="true"> </i>
</p> </div>
%% Cell type:markdown id: tags:
Rappel de quelques fonction de Turtle avec des exemples qui pourront vous servir
| Fonction |Exemple|Commentaire|
|:-------- |:------|:----------|
|forward(x)|forward(150)|Trace un trait de 150 points|
|backward(x)|backward(150)|Trace un trait “à reculons” de 150 points|
|left(n)|left(60)|Tourne sur place la tortue de 60° à gauche|
|right(n)|right(60)|Tourne sur place la tortue de 60° à droite|
|width(x)|width(5)|Change l’épaisseur à 5 points|
|color("c")|color("yellow")|Change la couleur du trait (mais aucun trait n’est tracé à ce moment). Notez les guillemets !|
|penup()|penup()|Lève la tortue (permet de se déplacer sans dessiner)|
|pendown()|pendown()|Baisse le stylo|
%% Cell type:markdown id: tags:
# 2. Répéter - `for`
# 2. Les boucles `for`
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 :
* la boucle `for` permet de répéter des instructions,
* la structure `for _ in range(n):` permet de répéter un bloc un nombre `n` fois,
* 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.
<blockquote class="alert alert-info" style="background-color:rgb(220,240,255); margin:10px 10%;">
<p><span style="font-size:1.5em"></span> C'est quoi une boucle? Exécutez la cellule ci-dessous pour voir une petite introduction sur la notion de boucle</p>
</blockquote>
<iframe width="560" height="315" src="https://www.youtube.com/embed/IBAv89hky8g?si=_te3mGANDxT82Dov" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Quizz </h3>
```
Une boucle informatique est
A) une instruction
B) un passage ondulé
C) une section de code répétée
D) une protection thermique
E) un cercle dessiné par "Turtle"
```
%% Cell type:raw id: tags:
Ta réponse :
%% Cell type:markdown id: tags:
<details>
<summary style="border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8">
Réponse (Cliquer pour dévoiler)
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
C) une section de code répétée
</div>
</details>
%% Cell type:markdown id: tags:
## 2.1 La répétition
Revenons vers un exemple simple : dessiner un carré.
Si nous regardons le code de près, nous pouvons voir que nous répétons 4 fois les mêmes deux instructions `forward()` et `left()`.
%% Cell type:code id: tags:
``` python
from turtle import *
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
done()
```
%% Cell type:markdown id: tags:
Ne serait-ce pas pratique de pouvoir dire à la tortue de répéter ces instructions 4 fois ?
Ceci est possible avec une boucle `for`.
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 1 </h3>Transformez le carré en triangle.
%% Cell type:code id: tags:
``` python
from turtle import *
for _ in range(4):
forward(100)
left(90)
done()
```
%% Cell type:markdown id: tags:
<div class="alert alert-block alert-warning"><b>A savoir:</b>
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.
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.
</div>
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Quizz </h3>
```
Une indentation de texte est
A) un décalage vers la gauche
B) un décalage vers la droite
C) une mise en paragraphe
D) une mise en sous-section
```
%% Cell type:raw id: tags:
Ta réponse :
%% Cell type:markdown id: tags:
<details>
<summary style="border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8">
Réponse (Cliquer pour dévoiler)
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
B) un décalage vers la droite
</div>
</details>
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Quizz </h3>
```
Avez-vous compris la notion d'indentation ?
Dans l'exemple ci-dessous (juste après la question/réponses) combien de fois le texte "Au revoir" va être affiché ?
Essayer de répondre puis exécuter le programme qui suit pour vérifier votre réponse
A) 0 fois
B) 1 fois
C) 5 fois
D) le code fera une une erreur à cause de l'indentation dans la boucle for
```
%% Cell type:code id: tags:
``` python
# Dans cette exemple l'instruction B ne fait pas partie de la boucle.
for _ in range(5):
print("Hello")
print("----------")
print("Au revoir")
```
%% Cell type:raw id: tags:
Ta réponse :
%% Cell type:markdown id: tags:
<details>
<summary style="border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8">
Réponse (Cliquer pour dévoiler)
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
B) 1 fois
</div>
</details>
%% Cell type:markdown id: tags:
## 2.3 Faire des figures avec les boucles
### Polygone régulier
Avec une boucle `for`, nous pouvons simplifier le dessin des formes symétriques.
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 2 </h3>
1. Utiliser une boucle pour réécrire le programme ci-dessous
%% Cell type:code id: tags:
``` python
from turtle import *
forward(100)
left(60)
forward(100)
left(60)
forward(100)
left(60)
forward(100)
left(60)
forward(100)
left(60)
forward(100)
left(60)
done()
```
%% Cell type:markdown id: tags:
2. Quelle est la figure dessinée ?
%% Cell type:raw id: tags:
Ta réponse :
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 3 </h3>
Compléter le programme ci-dessous pour tracer un octogone. Un octogone régulier (mêmes longueur de côtés, mmêmes angles) est un polygone à huit sommets, donc huit côtés.
Le programme doit faire moins de 5 lignes.
%% Cell type:code id: tags:
``` python
from turtle import *
# à compléter
done()
```
%% Cell type:markdown id: tags:
### Escalier
Pour dessiner un escalier, il faut simplement répéter dans une boucle le dessin pour une seule marche.
%% Cell type:code id: tags:
``` python
from turtle import *
for _ in range(5):
forward(20)
left(90)
forward(20)
right(90)
forward(100)
done()
```
%% Cell type:markdown id: tags:
Pour dessiner des dents de scie, il faut simplement répéter dans une boucle le dessin pour une seule dent.
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 4 </h3>
Dessinez une usine avec un toit en dents de scie.
![Image de losange](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap2/Toit_dent_de_scie.svg)
%% Cell type:code id: tags:
``` python
from turtle import *
for _ in range(4):
left(45)
forward(71)
right(135)
forward(50)
left(90)
forward(80)
done()
```
%% Cell type:markdown id: tags:
### Éventail
Que se passe-t-il si nous dessinons une ligne (`forward()`/`backward()`) et tournons chaque fois d'un petit angle ?
C'est un peu comme un éventail qui s'ouvre.
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 5 </h3>
Doublez l'angle de rotation dans `left()`.
%% Cell type:code id: tags:
``` python
from turtle import *
for _ in range(18):
forward(100)
backward(100)
left(10)
done()
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 6 </h3>
Que se passe-t-il si nous avançons plus que nous reculons ?
Une toute petite modification du programme peut faire une chouette différence.
Modifiez les valeurs dans `forward()` et `backward()`.
%% Cell type:code id: tags:
``` python
from turtle import *
for _ in range(18):
forward(100)
backward(90)
left(20)
done()
```
%% Cell type:markdown id: tags:
### Étoile
Voici une autre façon de toujours avancer, mais en tournant chaque fois d'un angle un peu plus petit que 180°.
Essayons !
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 7 </h3>
Essayez de changer le nombre de pics de l'étoile.
%% Cell type:code id: tags:
``` python
from turtle import *
for _ in range(9):
forward(200)
left(160)
done()
```
%% Cell type:markdown id: tags:
### Cercle
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 8 </h3>
Compléter la boucle for pour dessiner trois cercles rouge de rayon 50 collés les uns aux autres comme sur le dessin:
![Image de losange](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap2/3cercles.png)
%% Cell type:markdown id: tags:
##### Rappels:
- La fonction `circle(R, A)` permet de dessiner un arc de cercle de rayon `R` et d'angle `A`.
Exemple: `circle(100, 360)` dessine un cercle de rayon 100.
- Les fonctions `penup()` et `pendown()` permettent de lever, respectivement baisser, le stylo.
%% Cell type:code id: tags:
``` python
from turtle import *
color('red')
for _ in range(3):
# a compléter
done()
```
%% Cell type:markdown id: tags:
## 2.4 Explorer "La tortue"
Voici quelques fonctions de la tortue.
%% Cell type:markdown id: tags:
### Estampe
Vous pouvez laisser une impression de la tortue à sa position actuelle avec la fonction `stamp()`.
%% Cell type:code id: tags:
``` python
from turtle import *
shape('turtle')
for _ in range(6):
forward(100)
left(60)
stamp()
done()
```
%% Cell type:markdown id: tags:
### Forme
Vous pouvez changer la forme de votre tortue avec la fonction `shape()`.
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 9 </h3>Essayez les formes 'triangle', 'arrow', 'circle' et 'square'.
%% Cell type:code id: tags:
``` python
from turtle import *
shape('turtle')
for _ in range(6):
forward(100)
left(60)
stamp()
done()
```
%% Cell type:markdown id: tags:
## 2.5 Les erreurs
Il est important de bien lire et comprendre les messages d'erreur.
Dans cette section, vous allez découvrir les différentes catégories d'erreur et comment les corriger.
%% Cell type:markdown id: tags:
### ImportError
Cette erreur survient lorsque vous essayez d'importer un module qui n'existe pas.
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 10 </h3>
1. Corrigez l'erreur d'importation.
2. Testez le programme pour vérifier qu'il fonctionne.
%% Cell type:code id: tags:
``` python
from turtl import *
for i in range(3):
forward(100)
left(120)
done()
```
%% Cell type:markdown id: tags:
### <font color='red'>SyntaxError</font>
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.
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 11 </h3>Corrigez les trois erreurs de syntaxe et remarquez les éventuelles différences de stylisation.
%% Cell type:code id: tags:
``` python
fro turtle import *
fore i in range(3)
forward(100)
left(120)
done()
```
%% Cell type:markdown id: tags:
### <font color='red'>NameError</font>
Cette erreur survient lorsque vous écrivez mal le nom d'une variable ou fonction.
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 12 </h3>Corrigez les trois erreurs de nom.
%% Cell type:code id: tags:
``` python
from turtle import *
for _ in range():
forwarde(100)
lefft(120)
done()
```
%% Cell type:markdown id: tags:
### <font color='red'>TypeError</font>
Cette erreur survient lorsque vous ne mettez pas le nombre d'arguments corrects pour une fonction.
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 13 </h3>Corrigez les trois erreurs de type.
%% Cell type:code id: tags:
``` python
from turtle import *
for _ in range():
forward()
left(100, 120)
done()
```
%% Cell type:markdown id: tags:
## Exercices d'entraînement
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 14 </h3>
Réécrire le code suivant en remplaçant par une boucle `for` partout où c’est possible.
%% Cell type:code id: tags:
``` python
from turtle import *
forward(20)
right(40)
forward(20)
right(40)
forward(20)
right(40)
forward(20)
right(40)
forward(-40)
left(30)
forward(-40)
left(30)
forward(20)
right(40)
forward(20)
right(40)
forward(-40)
left(30)
done()
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 15 </h3>
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). [![A mushroom-head robot](https://www.algopython.fr/css/img/navbar-logo.png 'AlgoPython')](https://www.algopython.fr/login)
%% Cell type:markdown id: tags:
---
#### Remarque générale
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)
![Licence Creative Commons](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)
......
Notebook sur les print
----------------------
- Ajouter un info sur la diff " vs ', comment afficher les caractères spéciaux "\" par exemple, ou "\n"...
- Ajouter une info sur la diff " vs ', comment afficher les caractères spéciaux "\" par exemple, ou "\n"...
- Ajouter un dessin de division de nombre pour comprendre les opérations % et //
- Expliquer le end=
TP dessin
---------
- penser une partie des exercices des premiers notebook comme une préparation au TP dessin
- Exo sur des formes.
- Pour les fonctions insister sur le besoin de revenir au point de départ avec la même orientation.
NB boucle for
------------
- Rajouter une image de la syntaxe d'une boucle for où on voit la notion de bloc et le param du nombre itération
- Insister plus sur le terme indentation
Général
-------
- enlever les indices de toutes les boucles
- Faire des évals standardisé pour chaque NB
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment