Skip to content

Commit

Permalink
add more examples
Browse files Browse the repository at this point in the history
  • Loading branch information
rasql committed Mar 25, 2020
1 parent 6d78fd2 commit 8bf7e53
Show file tree
Hide file tree
Showing 24 changed files with 369 additions and 11 deletions.
Binary file added docs/1_intro/epfl1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions docs/1_intro/epfl1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# welcome to EPFL
import turtle

turtle.color('red', 'green')
turtle.shape('turtle')
turtle.speed(1)

turtle.write('EPFL', font=(None, 36))

for i in range(6):
turtle.forward(100)
turtle.left(60)
100 changes: 97 additions & 3 deletions docs/1_intro/intro.rst
Original file line number Diff line number Diff line change
@@ -1,10 +1,104 @@
Controler une tortue via des commandes
======================================
Introduction à la programmation
===============================

Dans ce tutoriel tu vas apprendre à programmer dans un langage qui s'appelle **Python**.
Tu vas programmer les déplacements d'une tortue. Voici à quoi ça va ressembler.

.. image:: epfl1.png

:download:`epfl1.py <epfl1.py>`

Cette tortue laisse une trace qui te permet de faire des dessins.
Mais tout d'abord tu dois télécharger un outil de travail.

Installer un éditeur
--------------------

Vas sur le site https://thonny.org
et télécharge l'application **Thonny**.

C'est un éditeur de programme qui permet de

- **écrire** un programme
- **executer** ce programme
- **afficher** le résultat

.. image:: thonny.png

Dans Thonny tu as trois régions

- les **boutons** pour *Créer, Ouvrir, Sauvegarder, Executer* un programme
- la partie **éditeur** pour écrire un programme entier (<untitled>)
- la **console** pour executer des commandes courtes (Shell)

Les premiers pas
----------------

Dans la console (ou Shell) tu peux directement entrer des expression courtes que Python peut évaluer.
Après les 3 chevrons (>>>) tu peux écrire cette addition::

>>> 1 + 2
3

Tu peux aussi essayer Cette muliplication::

>>> 12 + 13
156

Dans Python tu n'es pas limité dans le nombre de chiffre qu'un calcul peut produire.
Voici cette puissance de deux nombres qui donne un résultat qui s'étale sur 5 lignes::

>>> 123 ** 123
11437436793461719009988029522806627674621807845185022977588797
50523695047856668964466065683652015421696499747277306288423453
43196581134895919942820874449837212099476648958359023796078549
04194900780722062535652692672966406484668575838280370710076674
0220839267


.. literalinclude:: intro2.py

Controler une tortue
--------------------

Par la suite nous allons utiliser le module ``turtle`` tortue.
Pour pouvoir l'utiliser nous devons importer ce module au début du programme::

>>> import turtle

Ensuite nous pouveons cette tortue à l'aide des commandes

>>> turtle.forward(100)

Cette commande fait avancer la tortue de 100 pixels.
Une commande pour contrôler la tortue a la forme suivante:

- un premier mot qui est ``turtle``
- un point ``.``
- une commande (forward, backward, left, right, etc.)
- des parenthèses ``( )``
- un argumen numériques (distance, angle)

Pour la faire reculer de 200 pixels::

>>> turtle.backward(200)

Pour faire tourner la tortue 90 degrès à gauche::

>>> turtle.left(90)

Pour faire tourner la tortue 45 degrès à droite::

>>> turtle.right(45)


Ecrire un programme
-------------------

Tous ces commandes que tu peux écrire directement dans la console,
tu peux aussi les mettre dans un programme (qu'on appelle script).
Une fois le programme terminé, tu peux l'executer à l'aide du bouton vert **Executer**.

.. image:: intro2.png

.. literalinclude:: intro2.py
:download:`intro2.py <intro2.py>`
Binary file added docs/1_intro/thonny.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/2_variable/epfl2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions docs/2_variable/epfl2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# welcome to EPFL
import turtle

turtle.color('red', 'green')
turtle.shape('turtle')
turtle.speed(1)

faculties = ('SB', 'ENAC', 'STI', 'IC', 'SV')


for i in range(5):
turtle.write(faculties[i], font=(None, 36))
turtle.forward(80)
turtle.left(72)

turtle.done()
19 changes: 14 additions & 5 deletions docs/2_variable/variable.rst
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
Donner un nom a une valeur
==========================
Nommer une valeur
=================

Parfois nous utilisons les mêms valeurs plusieurs fois dans un programme.
Par exemple quand on dessine une carré on utilise la longeur 4 fois.
Quand on dessine un rectangle, on utilise la largeur et la hauteur 2 fois.
Parfois nous utilisons la même valeur plusieurs fois dans un programme.
Il est alors pratique de pouvoir donner un nom à cette valeur.
Une **variable** permet d'associer un **nom** à une **valeur**.

L'exemple ci-dessous montre la tortue qui visite les 5 facultés de l'EPFL.
Les noms des facultés sont stockés dans une ``variable``.

.. image:: epfl2.png
:download:`epfl2.py <epfl2.py>`

Dessiner un rectangle
---------------------
Quand on dessine un rectangle, on utilise la largeur et la hauteur 2 fois.
Il est pratique dans ce cas, de donner un nom à ces valeurs.
C'est exactement ce que font les variables.
Une variable est un nom qui est associé à une valeur numérique.
Expand Down
Binary file added docs/3_loop/epfl3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 23 additions & 0 deletions docs/3_loop/epfl3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# welcome to EPFL
import turtle

turtle.color('red', 'green')
turtle.shape('turtle')
turtle.speed(1)

turtle.write('EPFL', font=(None, 64))
turtle.goto(0, -50)

def square():
turtle.begin_fill()
for i in range(4):
turtle.forward(30)
turtle.left(90)
turtle.end_fill()

turtle.fillcolor('red')
for i in range(5):
square()
turtle.forward(60)

turtle.done()
15 changes: 15 additions & 0 deletions docs/3_loop/loop.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,21 @@
Répéter quelque chose
=====================

Dans un programme il a souvent des séquences qui se répètent.
On utilise alors une structure qu'on appelle **boucle** pour indiquer au programme
de répèter certains instructions.

Le nouveau logo de l'EPFL utilise des grands pixels rouges.
Ci-dessous, la tortue dessine dans une boucle les 4 cotés du carré rouge.
Ensuite la tortue répète dans une deuxième boucle ces carrés 5 fois.

.. image:: epfl3.png
:download:`epfl3.py <epfl3.py>`


Dessiner un carré
-----------------

On peut dessiner un carre en répétant 4 fois ces instructions

.. literalinclude:: square1.py
Expand Down
Binary file added docs/4_random/epfl4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 22 additions & 0 deletions docs/4_random/epfl4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# welcome to EPFL
import turtle
import random

turtle.color('red', 'green')
turtle.shape('turtle')
turtle.speed(1)

sections = ('mathématiques', 'chimie', 'physique', 'informatique', 'syscom', 'architecture', 'génie civil',
'environnement', 'électricité', 'mécanique', 'materiaux', 'microtechnique', 'sciences de la vie')

turtle.dot()
turtle.write('sections', font=(None, 36))

for s in sections:
x = random.randint(-300, 200)
y = random.randint(-150, 150)
turtle.goto(x, y)
turtle.dot()
turtle.write(s, font=(None, 12))

turtle.done()
82 changes: 81 additions & 1 deletion docs/4_random/random.rst
Original file line number Diff line number Diff line change
@@ -1,2 +1,82 @@
Choisir de façon aléatoire
==========================
==========================

Dans des jeux ou des animations, il est souvent nécessaire de pouvoir calculer des valeurs aléatores.
Le module ``random`` permet de trouver des valeurs aléatoires.

Partant du centre, la tortue visite les 13 sections de l'EPFL
qui se trouvent tous à des positions aléatoires sur cette carte.

.. image:: epfl4.png

:download:`epfl4.py <epfl4.py>`

Position aléatoire
------------------

Pour pouvoir utiliser des fonctions aléatoirs nous devons d'abord importer le module ``random``::

import random

La fonction ``random.randint(-100, 100)`` retourne une valeur aléatoire
qui se situe entre les deux valeurs -100 et 100.

.. image:: random1.png

.. literalinclude:: random1.py

:download:`random1.py <random1.py>`


Angle aléatoire
---------------

Pour simulier la marche aléatoire d'une fourmi, nous pouvons chosir l'angle à tourner
à chaque itération comme::

angle = random.randint(-90, 90)

.. image:: random2.png

.. literalinclude:: random2.py

:download:`random2.py <random2.py>`


Taille aléatoire
----------------

Ci-dessous la tortue va à une position (x, y) aléatoire et choisit une taille aléatoire
pour le cercle à dessiner::

size = random.randint(10, 50)
turtle.goto(x, y)
turtle.dot(size)

.. image:: random3.png

.. literalinclude:: random3.py

:download:`random3.py <random3.py>`


Couleur aléatoire
-----------------

La fonction ``random.choice(list)`` permet de choisir un élément dans une liste.
Il faut d'abord definir une liste::

colors = ('red', 'blue', 'green', 'violet', 'yellow', 'cyan', 'orange', 'magenta')

Ensuite un élément aléatoire est choisi de cette liste et utilisé comme nouvelle
couleur de la tortue::

color = random.choice(colors)
turtle.pencolor(color)

.. image:: random4.png

.. literalinclude:: random4.py

:download:`random4.py <random4.py>`

Binary file added docs/4_random/random1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions docs/4_random/random1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# random position
import turtle
import random

turtle.dot()
for i in range(20):
x = random.randint(-200, 200)
y = random.randint(-100, 100)
turtle.goto(x, y)
turtle.dot()

turtle.done()

Binary file added docs/4_random/random2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions docs/4_random/random2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# random direction
import turtle
import random

turtle.dot()
for i in range(100):
angle = random.randint(-90, 90)
turtle.forward(20)
turtle.left(angle)
turtle.dot()

turtle.done()
Binary file added docs/4_random/random3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions docs/4_random/random3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# random dot size
import turtle
import random

turtle.dot()
for i in range(20):
x = random.randint(-200, 200)
y = random.randint(-100, 100)
size = random.randint(10, 50)
turtle.goto(x, y)
turtle.dot(size)

turtle.done()

Binary file added docs/4_random/random4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 19 additions & 0 deletions docs/4_random/random4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# random color
import turtle
import random

colors = ('red', 'blue', 'green', 'violet', 'yellow', 'cyan',
'orange', 'magenta')


turtle.dot()
for i in range(15):
x = random.randint(-200, 200)
y = random.randint(-100, 100)
color = random.choice(colors)
turtle.pencolor(color)
turtle.goto(x, y)
turtle.dot(40)

turtle.done()

Loading

0 comments on commit 8bf7e53

Please sign in to comment.