ajout nouveaux fichiers
This commit is contained in:
284
sequences/programmation/activite_2/README.md
Normal file
284
sequences/programmation/activite_2/README.md
Normal file
@@ -0,0 +1,284 @@
|
||||
---
|
||||
title : Activité 2 - Les instructions conditionnelles
|
||||
author : M. BODDAERT
|
||||
license : CC-BY-NC-SA
|
||||
---
|
||||
# Les instructions conditionnelles
|
||||
|
||||
« _Si j'aurais su, j'aurais pas venu_ », réplique du Petit Gibus dans le film "La Guerre des boutons" d'Yves Robert.
|
||||
|
||||
## Définition
|
||||
|
||||
> Une __instruction conditionnelle__ permet de faire des choix en fonction de la valeur d’une __condition__. On parle souvent d’une instruction _si-alors_, ou _if-else_ en anglais.
|
||||
|
||||
En reprenant (et corrigeant) la citation du Petit Gibus, l'instruction conditionnelle devient « _Si j'avais su alors je ne serais pas venu_ ».
|
||||
|
||||
> Une __condition__ est une instruction qui est soit vraie, soit fausse. On parle alors d’une _instruction booléenne_ ou _variable booléenne_.
|
||||
|
||||
Par exemple, si une variable `note_francais` vaut 5 et qu’une variable `note_anglais` vaut 10 alors la condition `note_francais < note_anglais` est une condition qui est vraie, tandis que les conditions `note_francais > note_anglais` et `note_francais == note_anglais` sont fausses.
|
||||
|
||||
## Comparaisons de variables
|
||||
|
||||
Les opérateurs de comparaisons sont :
|
||||
|
||||
- `<` : inférieur
|
||||
- `<=` : inférieur ou égal
|
||||
- `>`: supérieur
|
||||
- `>=`: supérieur ou égal
|
||||
- `==` : est égal à
|
||||
- `!=`: est différents de
|
||||
|
||||
Le résultat d'une comparaison est toujours un booléen
|
||||
|
||||
- `True` si la comparaison est vraie
|
||||
- `False` si la comparaison est Fausse
|
||||
|
||||
Remarque : on ne peut comparer que des objets comparables
|
||||
|
||||
Attention, le test d'égalité entre deux variables se fait avec un double égal `==` (car le simple `=` permet d'affecter une valeur à une variable, Cf. [Activité 1](../activite_1/README.md)).
|
||||
|
||||
### À faire
|
||||
|
||||
Commenter chaque instruction ci-dessous
|
||||
|
||||
```python
|
||||
a = 5
|
||||
b = 18
|
||||
c = 12.3
|
||||
mot1 = "Hello"
|
||||
mot2 = "World"
|
||||
#
|
||||
print(a > b)
|
||||
#
|
||||
print(b // a == 3)
|
||||
#
|
||||
print(b % a == 3)
|
||||
#
|
||||
print(a - b > 2)
|
||||
#
|
||||
print(type(c) == float)
|
||||
#
|
||||
print(mot1 != mot2)
|
||||
#
|
||||
print(mot1 < mot2)
|
||||
#
|
||||
print(mot1 > 2)
|
||||
```
|
||||
|
||||
## Description
|
||||
|
||||
Dans une suite d'instructions on est souvent amené à faire des choix.
|
||||
|
||||
### Cas 1 : Si...Alors
|
||||
|
||||
**Si** une ou plusieurs conditions sont réalisées **Alors** on exécute une ou plusieurs instructions
|
||||
|
||||
La structure en Python : On indente (une tabulation) les instructions qui doivent s'exécuter si la condition est vérifiée
|
||||
|
||||
```
|
||||
if condition :
|
||||
instruction1
|
||||
instruction2
|
||||
```
|
||||
|
||||
Exemple qui affiche si les variables `a` et `b` sont des entiers pairs
|
||||
|
||||
```python
|
||||
a = 12
|
||||
if a % 2 == 0:
|
||||
print(a, " est un entier pair")
|
||||
|
||||
b = 13
|
||||
if b % 2 == 0:
|
||||
print(b," est un entier pair")
|
||||
```
|
||||
|
||||
### Cas 2 : Si ...Alors...Sinon
|
||||
|
||||
Dans cette structure, si la ou les conditions sont vraies, les instructions 1 et 2 sont exécutées. Sinon c'est l'instruction3 qui est exécutée.
|
||||
|
||||
```
|
||||
if condition:
|
||||
instruction1
|
||||
instruction2
|
||||
else:
|
||||
instruction3
|
||||
```
|
||||
|
||||
Exemple :
|
||||
|
||||
```python
|
||||
a = 12
|
||||
|
||||
if a % 2 == 0:
|
||||
print(a, " est un entier pair")
|
||||
else:
|
||||
print(a," est un entier impair")
|
||||
```
|
||||
|
||||
### Cas 3 : Si...Alors...Sinon Si
|
||||
|
||||
Dans cette structure on teste plusieurs conditions
|
||||
|
||||
```
|
||||
if condition1:
|
||||
instruction1
|
||||
elif condition2:
|
||||
instruction2
|
||||
instruction3
|
||||
elif condition3:
|
||||
instruction4
|
||||
else:
|
||||
instruction5
|
||||
```
|
||||
|
||||
Exemple :
|
||||
|
||||
Imaginons les conditions de passage d'un piéton en fonction du feu de signalisation et du nombre de voitures passantes :
|
||||
|
||||
```python
|
||||
if feu == 'VERT':
|
||||
print('Piéton, vous pouvez passer')
|
||||
elif voitures = 0 :
|
||||
print('Piéton, vous pouvez passer mais attention')
|
||||
else:
|
||||
print('Piéton, vous ne pouvez passer')
|
||||
```
|
||||
|
||||
### À Faire
|
||||
|
||||
Soit l'algorithme qui détermine la réponse de Yoda en fonction de la taille qui lui est communiquée :
|
||||
|
||||
```txt
|
||||
Demander la taille
|
||||
Si la taille est supérieure à 1m80 alors
|
||||
la réponse est 'Maître, vous vous prenez pour Chewbacca'
|
||||
Sinon si la taille est supérieure à 1m20 alors
|
||||
la réponse est 'Maitre, vous vous prenez pour Luc Skywalker'
|
||||
Sinon si la taille est supérieure à 0.80m alors
|
||||
la réponse est "Maitre, ce n'est pas la taille qui compte"
|
||||
Sinon la réponse est 'Maitre, vous vous sous-estimez'
|
||||
```
|
||||
|
||||
Compléter le code suivant pour qu'il implante l'algorithme ci-dessus :
|
||||
|
||||
```python
|
||||
taille = input('Combien mesures-tu ?')
|
||||
taille = float(taille)
|
||||
if taille > 1.8 :
|
||||
reponse = ???
|
||||
elif taille > 1.2 :
|
||||
reponse = ???
|
||||
elif taille > 0.8 :
|
||||
reponse = ???
|
||||
else :
|
||||
reponse = ???
|
||||
print(reponse)
|
||||
```
|
||||
|
||||
## Exercices
|
||||
|
||||
### Exercice 1
|
||||
|
||||
Modifier le code suivant pour qu'il y ait 4 couleurs différentes en fonction de la position(abscisse) de la souris
|
||||
|
||||
**mouseX** renvoie l'abscisse de la souris (0 pour le coin supérieur gauche de la fenêtre)
|
||||
|
||||
( 0 à 50 , 50 à 100, 100 à 150 et 150 à 200)
|
||||
|
||||
```python
|
||||
from p5 import *
|
||||
|
||||
def setup():
|
||||
createCanvas(200,200) # crée une fenêtre de 200 x 200 pixels
|
||||
|
||||
def draw():# cette fonction s'exécute en boucle 60 fois par seconde...
|
||||
# les conditions pour la couleur du fond d'écran
|
||||
if mouseX > 0 and mouseX < 100: # teste la position (abscisse) de la souris sur la moité gauche (0 à 100)
|
||||
background(255,120,0) #
|
||||
elif mouseX > 100 and mouseX < 200:# teste la position (abscisse) de la souris sur la moité droite (100 à 200)
|
||||
background(0,255,120) #
|
||||
else:
|
||||
background(0,0,255) # fond bleu
|
||||
run()
|
||||
```
|
||||
|
||||
### Exercice 2
|
||||
|
||||
Reprendre le code précédent(copier-coller) et en utilisant les instructions **mouseX** et **mouseY** (qui renvoie abscisse et ordonnée de la souris), faites en sorte qu'il y ait 4 couleurs différentes qui s'affichent suivant la position de la souris dans les quadrants:
|
||||
|
||||
- 0 < mouseX <100 et 0 < mouseY < 100, la couleur affichée doit être le bleu
|
||||
- 100 < mouseX < 200 et 0 < mouseY < 100, la couleur affichée doit être le vert
|
||||
- 0 < mouseX < 100 et 100 < mouseY < 200, la couleur affichée doit être le rouge
|
||||
- 100 < mouseX < 200 et 100 < mouseY < 200, la couleur affichée doit être le jaune
|
||||
|
||||
### Exercice 3
|
||||
|
||||
Dans le code suivant on affiche dans la fenêtre 4 cercles et la couleur de fond change si la souris survole l'un des cercles.
|
||||
|
||||
- l'instruction **circle(50,50,40)** dessine un cercle de centre (50,50 ) et de diamètre 40.
|
||||
- l'instruction **dist(x1,y1,x2,y2)** calcule la distance entre les points de coordonnées (x1,y1) et (x2,y2).
|
||||
- **dist(mouseX,mouseY,50,50) < 20** teste si la souris est dans l'un des cercles.
|
||||
|
||||
Compléter le code de façon que le fond change de couleur au survol des 4 cercles.
|
||||
|
||||
```python
|
||||
from p5 import *
|
||||
|
||||
def setup():
|
||||
createCanvas(200,200) # crée une fenêtre de 200 x 200 pixels
|
||||
|
||||
def draw():# cette fonction s'exécute en boucle 60 fois par seconde...
|
||||
if dist(mouseX,mouseY,50,50) < 20:
|
||||
background(255,255,0)
|
||||
# à modifier ici
|
||||
else:
|
||||
background(51,51,51)
|
||||
# ne pas modifier...
|
||||
fill(0,0,0)
|
||||
circle(50,50,40)
|
||||
circle(150,150,40)
|
||||
circle(150,50,40)
|
||||
circle(50,150,40)
|
||||
|
||||
run()
|
||||
```
|
||||
|
||||
### Exercice 4
|
||||
|
||||
Le code ci-dessous montre "une balle" se déplaçant sur un axe horizontal dans une fenêtre en rebondissant sur les bords.
|
||||
|
||||
Compléter le code de telle sorte que la balle se déplace aussi dans la verticale en rebondissant sur les bords inférieur et supérieur de la fenêtre.
|
||||
|
||||
```python
|
||||
from p5 import *
|
||||
|
||||
def setup():
|
||||
global bx,by,vx,vy,r
|
||||
r = 20
|
||||
bx = 50
|
||||
by = 50
|
||||
vx = 4
|
||||
vy = 5
|
||||
createCanvas(400,200) # crée une fenêtre de 200 x 200 pixels
|
||||
|
||||
def draw():# cette fonction s'exécute en boucle 60 fois par seconde...
|
||||
global bx,by,vx,vy,r
|
||||
background(0,0,0)# fond noir
|
||||
# mouvement du cercle sur l'axe horizontal
|
||||
bx = bx + vx
|
||||
# rebond sur les bords gauche et droit
|
||||
if bx < r or bx > 400 - r:
|
||||
vx = -vx
|
||||
# dessin du cercle
|
||||
fill(255,0,0)
|
||||
circle(bx,by,2*r)
|
||||
|
||||
run()
|
||||
```
|
||||
|
||||
### Exercice 5
|
||||
|
||||
Reprendre le code précédent et faire en sorte que la "balle" change de couleur à chaque rebond
|
||||
|
||||
Pour utiliser une couleur aléatoire, on pourra utiliser l'instruction: `fill(random(255),random(255),random(255))`
|
||||
Reference in New Issue
Block a user